Nat*_*tim 1 django django-urls internationalization
我还开发了一个带有 i18n url 的 Django 应用程序。
这看起来真的很好,但是当更改语言时,我想留在同一/上一页。
最好的方法是什么?
基本上,为了获取新的 url,我需要reverse在更改语言后对上一页的名称执行 a 操作并进行重定向,但是我如何知道上一页的 url 名称?
编辑:
来自一位同事的解决方案:
使用 request.resolver_match 计算每种语言的下一个参数。对于每种语言:activate(language) + reverse('{app_name}:{url_name}', args, kwargs)使用 request.resolver_match 元素
你有更好的主意吗?
小智 5
使用 django-modeltranslation 重定向到主页更改语言后?
如果你想重定向到同一页面,可以替换这部分代码:
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
<div class="languages">
<p>{% trans "Language" %}: </p>
<ul class="languages">
{% for language in languages %}
<li>
<a href="/{{ language.code }}/
{% if language.code == LANGUAGE_CODE %} class="selected"{% endif %}>
{{ language.name_local }}
</a>
</li>
{% endfor %}
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
到:
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
<div class="languages">
<p>{% trans "Language" %}: </p>
<ul class="languages">
{% for language in languages %}
<li>
<a href="/{{ language.code }}/{{request.get_full_path|slice:"4:"}}"
{% if language.code == LANGUAGE_CODE %} class="selected"{% endif %}>
{{ language.name_local }}
</a>
</li>
{% endfor %}
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
请注意:
<a href="/{{ language.code }}/
替换为 <a href="/{{ language.code }}/{{request.get_full_path|slice:"4:"}}"
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |