【问题标题】:Django i18n setlang view gives Error 404Django i18n setlang 视图给出错误 404
【发布时间】:2012-06-05 13:53:10
【问题描述】:

我正在尝试使用内置的 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 文件,但似乎找不到它不起作用的原因,我真的很感谢你的回答。谢谢你

【问题讨论】:

    标签: django localization internationalization translation


    【解决方案1】:

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

    如果将其更改为:

    from django.http import HttpResponse
    ...
    (r'^i18n/', lambda x: HttpResponse("Test")),
    

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

    【讨论】:

    • 非常感谢您的回答,尽管我在阅读您的帖子前 2 分钟才找到另一个解决方案。我浏览了包含的 django 代码,并在 urls.py 中包含了指向视图的直接链接,尽管我不得不重命名它并去掉斜杠:url(r'^setlang', 'django.views.i18n.set_language'),
      `( select_language.html) 再次感谢您的努力。
    猜你喜欢
    • 2014-05-19
    • 2011-06-17
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2014-05-06
    • 2014-12-08
    • 2016-02-28
    • 2012-09-30
    相关资源
    最近更新 更多