0

我正在使用 djangio-localeurl 根据我的 URL 提供区域切换。除了有点打嗝之外,它几乎可以正常工作。

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

由于在解析 urls.py 期间会评估视图的装饰器,因此您遇到了“鸡 - 蛋”问题。由于未读取 urls.py,因此无法使用方法 reverse()。

似乎 django-localeurl 猴子补丁 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设置中删除时,这个问题似乎消失了。

关于如何解决这个问题的任何想法?

谢谢

4

1 回答 1

2

这似乎是lazy_reverse 函数中的一个错误。我没有修改我的lazy_reverse函数以返回unicode而不是str. 这是它的样子:

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

reverse_lazy = lazy(reverse, unicode) 
于 2011-11-17T09:23:30.523 回答