使用django-localeurl时无法进行延迟反转

时间:2011-11-15 07:30:02

标签: python django django-localeurl

我正在使用djangio-localeurl根据我的网址提供区域设置切换。除了一点打嗝之外,它的工作原理很好。

在我的一些基于类的视图中,我一直在使用惰性反向函数,否则我会收到有关缺少URL模式的错误。这是由于导入文件的顺序。一种解释如下:

  

因为在解析期间会评估视图的装饰器   urls.py你有'鸡蛋'问题。方法反转()   由于未读取urls.py,因此无法使用。

似乎django-localeurl monkey-patches Django的内部reverse功能。此更改工作正常但我的lazy_reverse函数给了我问题。现在,当我运行测试时,我在使用此lazy_reverse函数的地方出错。这是我的lazy_reverse功能代码:

from django.utils.functional import lazy
from django.core import urlresolvers

reverse_lazy = lambda name=None, *args : lazy(urlresolvers.reverse, str)(name, args=args)

我不断得到的错误是:

TypeError: Lazy object returned unexpected type.

我似乎能理解是什么导致了这一点。当我从localeurl设置中删除INSTALLED_APPS时,此问题似乎就消失了。

有关如何解决此问题的任何想法?

由于

1 个答案:

答案 0 :(得分:2)

似乎lazy_reverse函数出错了。我没有修改lazy_reverse函数来返回unicode而不是str。这是它的样子:

from django.utils.functional import lazy
from django.core.urlresolvers import reverse

reverse_lazy = lazy(reverse, unicode)