本文介绍 django.views.i18n.set_language
的用法。
声明
set_language(request)
为方便起见,Django 带有一个视图
,它设置用户的语言偏好并重定向到给定的 URL,或者默认情况下返回上一页。django.views.i18n.set_language()
通过将以下行添加到您的 URLconf 来激活此视图:
path('i18n/', include('django.conf.urls.i18n')),
(请注意,此示例使视图在 /i18n/setlang/
可用。)
警告
确保您没有在
中包含上述 URL - 它本身需要独立于语言才能正常工作。i18n_patterns()
该视图预计将通过POST
方法调用,并在请求中设置language
参数。如果启用了会话支持,视图会将语言选择保存在用户的会话中。它还将语言选择保存在默认名为 django_language
的 cookie 中。 (可以通过
设置更改名称。)LANGUAGE_COOKIE_NAME
设置语言选择后,Django 在POST
或GET
数据中查找next
参数。如果找到并且 Django 认为它是一个安全的 URL(即它不指向不同的主机并使用安全方案),将执行到该 URL 的重定向。否则,Django 可能会退回到将用户从 Referer
标头重定向到 URL,或者,如果未设置,则重定向到 /
,具体取决于请求的性质:
- 如果请求接受 HTML 内容(基于其
Accept
HTTP 标头),则将始终执行回退。 - 如果请求不接受 HTML,则仅当设置了
next
参数时才会执行回退。否则将返回 204 状态码(无内容)。
这是示例 HTML 模板代码:
{% load i18n %}
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}">
<select name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go">
</form>
在这个例子中,Django 在redirect_to
上下文变量中查找用户将被重定向到的页面的 URL。
相关用法
- Python Django set用法及代码示例
- Python dict setdefault()用法及代码示例
- Python calendar setfirstweekday()用法及代码示例
- Python set clear()用法及代码示例
- Python OpenCV setWindowTitle()用法及代码示例
- Python set()用法及代码示例
- Python setattr()用法及代码示例
- Python set copy()用法及代码示例
- Python set add()用法及代码示例
- Python set symmetric_difference_update()用法及代码示例
- Python OpenCV setTrackbarPos()用法及代码示例
- Python seaborn.swarmplot()用法及代码示例
- Python seaborn.residplot()用法及代码示例
- Python Django serve用法及代码示例
- Python seaborn.regplot()用法及代码示例
- Python Django sensitive_variables用法及代码示例
- Python seaborn.PairGrid()用法及代码示例
- Python Tableau server_info.get用法及代码示例
- Python Pandas series.cummax()用法及代码示例
- Python seaborn.boxenplot()用法及代码示例
- Python Pandas series.cumprod()用法及代码示例
- Python seaborn.pairplot()用法及代码示例
- Python seaborn.factorplot()用法及代码示例
- Python seaborn.FacetGrid()用法及代码示例
- Python seaborn.lineplot()用法及代码示例
注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.views.i18n.set_language。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。