如何解决Wagtail模型翻译语言切换器在/搜索页上不起作用
我在search
中添加了i18n_patterns
网址,但是该语言切换器在该页面上不起作用。
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>
此外,当我在search
上方添加root
网址时,搜索页面将显示404页面。
如何使语言切换器在搜索页面上工作?
解决方法
语言切换器使用Wagtail page
变量。请参见change_lang
模板标记:
<a ... href="{% change_lang language page %}">...</a>
搜索是Django视图,而不是Wagtail页面。 page
变量未定义。
您可以通过自己设置href来使切换器在搜索视图上工作:
{% for language in languages %}
<a href="/{{ language.code }}/search/"
{% endfor %}
或者,您可以创建Wagtail搜索页面:
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添加到页面树中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。