小编Car*_*all的帖子

Django 1.8 set_language视图不会重定向到指定的语言

在"set_language不工作"类别的问题的另一个变体中,我有这个头颅.

在我的页面中,我有一个由三部分组成的语言选择器:

  1. 隐藏的形式

    <form action="{% url 'set_language' %}" method="post" id="language-form" name="language-form">
        {% csrf_token %}
        <input type="hidden" name="language" id="language" value="" />
    </form>
    
    Run Code Online (Sandbox Code Playgroud)
  2. Javascript表单提交功能

    function set_language(code) {
        $('#language').val(code);
        $('#language-form').submit();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 和html列表(这里显示为在浏览器中呈现,而不是模板语言):

    <li class="active"><a href="javascript:set_language('en-gb')"><img src="/static/img/locale/en-gb.png"> Great Britain (English) (en-gb)</a></li>
    <li><a href="javascript:set_language('nl-be')"><img src="/static/img/locale/nl-be.png"> Belgium (Dutch) (nl-be)</a></li>
    <li><a href="javascript:set_language('fr-be')"><img src="/static/img/locale/fr-be.png"> Belgium (French) (fr-be)</a></li>
    <li><a href="javascript:set_language('nl-nl')"><img src="/static/img/locale/nl-nl.png"> Netherlands (Dutch) (nl-nl)</a></li>
    <li><a href="javascript:set_language('fy-nl')"><img src="/static/img/locale/fy-nl.png"> Netherlands (Frisian) (fy-nl)</a></li>
    
    Run Code Online (Sandbox Code Playgroud)

我可以确认上述功能符合预期,并提交一个POST请求,内容如下:

csrfmiddlewaretoken=5Vcs9XdvHs7uJwPg4BHtnVPhPW3mMT0w&language=nl-nl
Run Code Online (Sandbox Code Playgroud)

并且开发服务器看到帖子,如下所示:

[08/Jul/2015 23:58:33]"POST /i18n/setlang/ HTTP/1.1" 302 0
[08/Jul/2015 23:58:33]"GET /en-gb/ HTTP/1.1" 200 6738
Run Code Online (Sandbox Code Playgroud)

我也可以确认手动输入时各种网站网址都有效,所以我可以转到localhost/en-gb/foo并且localhost/fr-be/foo …

django localization internationalization

2
推荐指数
1
解决办法
1765
查看次数