【问题标题】:Django urlconf fails to resolve valid regexDjango urlconf 无法解析有效的正则表达式
【发布时间】:2017-07-05 09:19:00
【问题描述】:

我在将 url 路由到 Django 中的视图时遇到问题。具体来说,我使用带有以下模式的 URL:

url(r'^(?P<id>[A-Za-z0-9\ ]+)/(?P<subid>[A-Za-z0-9\ ]+)/managetables$', views.compiledata, name='compiledata')

一个示例网址是My data/current/managetables。我检查了正则表达式在 www.pyregex.com (example) 上返回了预期的捕获组

但是,实际访问 url 并不会导致视图被调用。最重要的是,它适用于高度相似的 url:

url(r'^(?P<id>[A-Za-z0-9\ ]+)/(?P<subid>[A-Za-z0-9\ ]+)/managetab$', views.compiledata, name='compiledata')

如果我访问My data/current/managetab,视图会按预期调用。此外,在 urlconf 中附加一个“/”也可以 - 但我不清楚为什么,即:

url(r'^(?P<id>[A-Za-z0-9\ ]+)/(?P<subid>[A-Za-z0-9\ ]+)/managetables/$', views.compiledata, name='compiledata')

访问My data/current/managetables导致重定向到调用视图的My data/current/managetables/

感谢任何关于如何解决此问题的提示。

【问题讨论】:

  • 你有完整的 noreversematch 堆栈跟踪吗? (另外,空格在 url 中并不是很好用,你应该把它们 slugify)
  • 感谢您的评论 - 一旦我有更多信息,我会尽快回复。
  • 我目前无法在我所在的机器上复制该问题 - 但代码相同。我会检查原始机器上是否仍然存在问题。

标签: regex django url urlconf


【解决方案1】:

好的,虽然问题只出现在两台机器中的一台上,但对 url 进行 slugify 的提示解决了这个问题。对于遇到类似问题的任何人,可以在此处找到有关 slugify 的更多信息: Tango with Django's Chapter 7,以及Django Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 2012-08-21
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多