• set_language 重定向视图

    set_language 重定向视图

    方便起见,Django自带了一个 django.views.i18n.set_language 视图,作用是设置用户语言偏好并重定向返回到前一页面。

    在URLconf中加入下面这行代码来激活这个视图:

    1. (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模板代码的例子:

    1. <form action="/i18n/setlang/" method="post">
    2. <input name="next" type="hidden" value="/next/page/" />
    3. <select name="language">
    4. {% for lang in LANGUAGES %}
    5. <option value="{{ lang.0 }}">{{ lang.1 }}</option>
    6. {% endfor %}
    7. </select>
    8. <input type="submit" value="Go" />
    9. </form>