【问题标题】:Unable to lazy reverse when using django-localeurl使用 django-localeurl 时无法延迟反向
【发布时间】:2011-11-15 07:30:01
【问题描述】:

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

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

由于您的视图的装饰器在解析过程中被评估 urls.py 你有一个“鸡 - 鸡蛋”的问题。方法 reverse() 无法使用,因为没有读取 urls.py。

似乎 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.

我似乎可以理解是什么原因造成的。当我从 INSTALLED_APPS 设置中删除 localeurl 时,此问题似乎消失了。

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

谢谢

【问题讨论】:

    标签: python django django-localeurl


    【解决方案1】:

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

    from django.utils.functional import lazy
    from django.core.urlresolvers import reverse
    
    reverse_lazy = lazy(reverse, unicode) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多