Django 版本:1.5(主干)
我在 url 模式 A 中使用了积极的前瞻断言,它本身工作得很好。但是当我尝试反转完全不相关的 url 模式 B 时,我得到:
ValueError: Non-reversible reg-exp portion: '(?='
示例网址:
url(r'^foo(?=bar)/', test, name= 'bla'),
url(r'bar/', test, name= 'bli'),
触发错误:
from django.core.urlresolvers import reverse
reverse('bli')
我找到了这张相关的票,但遗憾的是并没有让我变得更聪明 https://code.djangoproject.com/ticket/17492
谁能告诉我代码有什么问题吗?
最佳答案
你的代码没问题,问题是,Django 无法反转所有可能的正则表达式。目前,Django 的正则表达式规范化器实现至少不能处理两件事:析取 (|
) 和非捕获(向前看、向后看)模式。
因此,要解决您的问题,只需避免在 URL 模式中使用前瞻即可。毕竟,使用简单的正则表达式而不需要所有那些时髦的扩展应该可以表示任何正则语言。
关于Django url反向: Non-reversible reg-exp portion: '(?=' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570463/