2

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

谁能告诉我代码有什么问题?

4

1 回答 1

5

您的代码没问题,问题是,Django 无法反转所有可能的正则表达式。目前 Django 的正则表达式规范器的实现至少不能处理两件事:析取(|)和非捕获(前瞻、后瞻)模式。

因此,要解决您的问题,只需避免在您的 URL 模式中使用前瞻,您就可以开始了。毕竟,应该有可能使用简单的正则表达式而没有所有那些时髦的扩展,它可以表示任何正则语言。

于 2012-05-13T10:31:20.607 回答