Django i18n setlang视图给出错误404

时间:2012-06-05 13:53:10

标签: django localization internationalization translation

我正在尝试使用内置的i18n翻译django应用程序。我已经根据教程标记了要翻译的文本并创建和编译了语言文件(.po/.mo)并且没有出错。我还在设置文件中将USE_I18N更改为true,并按照教程指示将以下行添加到urls.py中:

(r'^i18n/', include('django.conf.urls.i18n')),

我还按照教程的说明在settings.py中定义了允许的语言列表。

然后我创建了一个新的页面html模板,并复制到教程为语言选择页面提供的代码中:

<form action="/i18n/setlang/" method="post">
 {% csrf_token %}
 <input name="next" type="hidden" value="{{ redirect_to }}" />
 <select name="language">
  {% get_language_info_list for LANGUAGES as languages %}
  {% for language in languages %}
   <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
  {% endfor %}
 </select>
 <input type="submit" value="Go" />
</form>

该页面也可以正常运行,但是当我点击“Go”时,它会告诉我加载页面时出错:

Failed to load resource:http://localhost:8000/i18n/setlang/ 
the server responded with a status of 404 (NOT FOUND)

我尝试通过用链接替换变量来更改重定向,但这给了我相同的结果。我尝试更改表单操作路径和urls.py,以防有一些双重命名,这给了我同样的错误。

我一直在阅读教程和自述文件,以及一些i18n文件,似乎找不到它不工作的原因,我真的很感激答案。三江源

1 个答案:

答案 0 :(得分:2)

您确定使用了正确的urls.py,即项目根目录中的urls.py,而不是在子目录中吗?

如果将其更改为:

会发生什么
from django.http import HttpResponse
...
(r'^i18n/', lambda x: HttpResponse("Test")),

之后你可以去http://localhost:8000/i18n/吗?