【发布时间】:2017-03-24 10:47:09
【问题描述】:
问题
我目前正在尝试从 Django 1.9.8 升级到 Django 1.10.3。但是目前我的测试失败了,因为出于某种原因,当我reverse()它们时,Django 试图翻译/国际化我的 URL。
在国际化方面我没有做任何改变,我非常想关闭这个“功能”。它不仅没有通过很多测试,而且还有一些项目必须静态引用该网站的 URL。这意味着该网站上的 URL 不允许更改(否则我必须为 Django 提供的每个翻译编辑它们,这将是一个真正的痛苦)。
错误
我在测试中遇到的实际错误如下:
Traceback (most recent call last):
File "/tests/unit/views/test_index.py", line 14, in setUp
self.url = reverse('indexpage')
File "/local/lib/python2.7/site-packages/django/urls/base.py", line 91, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 346, in _reverse_with_prefix
possibilities = self.reverse_dict.getlist(lookup_view)
File "/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 243, in reverse_dict
return self._reverse_dict[language_code]
KeyError: 'nl-nl'
很明显 Django 正在尝试使用此项目设置中提供的语言代码来做一些事情。
我尝试了什么
我尝试将USE_I18N 设置为False。我也试过这个USE_L10N。我还尝试删除我的设置中指定的LANGUAGE_CODE,但随后引发的错误是指en-us 语言代码而不是nl-nl 语言代码。我还尝试安装LocaleMiddleware,看看我是否至少可以让错误停止显示,但不幸的是这也不起作用。
问题
如何在 Django 中关闭 URL 内部化/翻译。或者如果这是不可能的,有什么好的选择?
提前致谢。
【问题讨论】:
-
您可以从 settings.py 本身停用国际化:USE_I18N = True //将其设置为 False
-
@VijeshVenugopal 我已经事先尝试过了,但这不起作用。我仍然收到我在回答中指定的错误。
-
这与翻译无关,但似乎与#26888有关。你能显示你的网址和你的
test_index.py吗?
标签: python django django-urls django-1.10