- set_language 重定向视图
set_language 重定向视图
方便起见,Django自带了一个 django.views.i18n.set_language
视图,作用是设置用户语言偏好并重定向返回到前一页面。
在URLconf中加入下面这行代码来激活这个视图:
(r'^i18n/', include('django.conf.urls.i18n')),
(注意这个例子使得这个视图在 /i18n/setlang/
中有效。)
这个视图是通过 GET
方法调用的,在请求中包含了 language
参数。 如果session已启用,这个视图会将语言选择保存在用户的session中。 否则,它会以缺省名django_language
在cookie中保存这个语言选择。(这个名字可以通过LANGUAGE_COOKIE_NAME
设置来改变)
保存了语言选择后,Django根据以下算法来重定向页面:
Django 在
POST
数据中寻找一个下一个
参数。如果
next
参数不存在或为空,Django尝试重定向页面为HTML头部信息中Referer
的值。如果
Referer
也是空的,即该用户的浏览器并不发送Referer
头信息,则页面将重定向到/
(页面根目录)。
这是一个HTML模板代码的例子:
<form action="/i18n/setlang/" method="post">
<input name="next" type="hidden" value="/next/page/" />
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>