2011-11-15 19 views
0

我正在使用djangio-localeurl提供基于我的URL的区域设置切换。除了一个小小的打嗝之外,它工作得很好。使用django-localeurl时无法进行延迟反转

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

由于在解析 urls.py时评估了您的视图的装饰器,所以您有'鸡 - 鸡蛋'问题。由于未读取urls.py,因此无法使用reverse() 方法。

看来,Django的localeurl猴子补丁Django的内部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. 

我似乎明白是什么原因造成这一点。从我的INSTALLED_APPS设置中删除localeurl时,此问题似乎消失。

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

谢谢

回答

2

这似乎是lazy_reverse函数中的错误。我没有修改我的lazy_reverse函数以返回unicode而不是str。下面是它的外观:

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

reverse_lazy = lazy(reverse, unicode)