django - set_language视图给我一个“找不到页面”的错误

时间:2011-03-09 20:30:14

标签: django internationalization

你好 我一直在关注django的国际化文档(在django 1.2.5上使用mezzanine),一切都很好,除非我使用类似文档中的表单来切换语言代码 像这样

<form action="/i18n/setlang/" method="post">
<input name="next" type="hidden" value="/whatever/" />
<select name="language">
    {% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
    {% endfor %}
</select>
<input type="submit" value="Go" />
</form>

我的urlconf看起来像这样

urlpatterns += patterns("",
    ("^admin/", include(admin.site.urls)),
    ("^", include("mezzanine.urls")),
    (r'^i18n/', include('django.conf.urls.i18n')),

)

当我切换语言并点击“go”时,我得到一个

        Page Not Found (404)
        Request Method: POST
        Request URL:    http://127.0.0.1:8000/i18n/setlang/
        No Page matches the given query.

我添加了i18n网址和区域设置中间件。我在一个新项目中尝试了它,但没有运气。 有线索吗?

1 个答案:

答案 0 :(得分:6)

Mezzanine的urlpatterns包含一个“全部捕获”页面,因此永远不会找到它下面的任何内容。要使您的模式正常工作,您只需将urls.py中的最后两个模式交换为:

urlpatterns += patterns("",
    ("^admin/", include(admin.site.urls)),
    (r'^i18n/', include('django.conf.urls.i18n')),
    ("^", include("mezzanine.urls")),
)