Wagtail模型翻译语言切换器在/搜索页上不起作用 [英] Wagtail modeltranslation language switcher doesn't work on /search page

查看:79
本文介绍了Wagtail模型翻译语言切换器在/搜索页上不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在 i18n_patterns 中添加了 search 网址,但是语言切换器在该页面上不起作用.
urls.py:

I have added search url to i18n_patterns, but the language switcher doesn't work on that page.
urls.py:

urlpatterns += i18n_patterns(
    path("search/", search_views.search, name="search"),
    path("", include(wagtail_urls)),
)

语言切换器:

{% get_available_languages_wmt as languages %}
<div class="nav-item dropdown float-right">
    <p class="nav-link dropdown-toggle m-auto" data-toggle="dropdown" role="button" aria-expanded="false">
        {{ request.LANGUAGE_CODE|upper }}</p>
    <div class="dropdown-menu w-25">
        {% for language in languages %}
        {% if language != request.LANGUAGE_CODE %}
        <a class="dropdown-item" href="{% change_lang language page %}">{{ language|upper }}</a>
        {% endif %}
        {% endfor %}
    </div>
</div>

此外,当我在 root 上方添加 search 网址时,搜索页面将显示404页面.如何使语言切换器在搜索页面上工作?

Furthermore, when i add search url above root one the search page raises 404 page. How can i make the language switcher work on the search page?

推荐答案

语言切换器使用Wagtail page 变量.请参见 change_lang 模板标记:

The language switcher uses the Wagtail page variable. See the change_lang template tag:

<a ... href="{% change_lang language page %}">...</a>

搜索是Django视图,而不是Wagtail页面. page 变量未定义.

And search is a Django view, not a Wagtail page. The page variable is not defined.

您可以通过自己设置href来使切换器在搜索视图上工作:

You can make the switcher work on the search view by setting the href yourself:

{% for language in languages %}
    <a href="/{{ language.code }}/search/"
{% endfor %}

或者,您可以创建Wagtail搜索页面:

Alternatively, you can create a Wagtail search page:

class SearchPage(Page):
    def get_context(self, request):
        context = super().get_context(request)            

        ... # Copy the code from the current search view.

        # Update and return the context
        context.update({
            'search_query': search_query,
            'search_results': search_results,
        })
        return context

https://docs.wagtail.io/en/latest/topics/pages.html#customising-template-context

您还必须:

  • 重命名(search_page.html)并重做(page.variable_name)您的搜索模板.
  • 从urls.py中删除搜索网址
  • 通过Wagtail管理界面将SearchPage添加到页面树中.

这篇关于Wagtail模型翻译语言切换器在/搜索页上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆