- 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>
