Django url反向: Non-reversible reg-exp portion: '(?='

标签 django django-urls

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/

相关文章:

Django 1.9 url 包含 AttributeError 'str' 对象没有属性 'regex'

python - Fabric python安装问题

python - 为什么 Django filter() 添加项目而不是删除它们?

python - 使用 URL 中的字段在 Django Rest Framework 的 ListAPIView 中进行过滤

javascript - 使用 Django 模板(列表和字典)将 Python 数据结构转换为 js 数据结构

Django 使用多个redis进行缓存

django - get_sucess_url 在 django 中如何工作?

Django 未运行 View ,404

python - 使用 get_absolute_url() 时出现 NoReverseMatch 错误

python - django-registration 中的 URL 配置