url捕获的正则表达式(\ w +)与某些网址

时间:2017-05-10 14:51:41

标签: python regex django

my_app的urls.py配置文件的两行如下所示。它们几乎相同,只有第二个附加了uuid4

# preview views to allow us to preview stuff
url(r'^(?P<hash>\w+)/preview/$', Start.as_view(), {'preview':True}, name='preview'),
url(r'^(?P<hash>\w+)/preview/(?P<uuid>[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12})/$', PreviewController.as_view(), name='previewcontroller'),

以下网址无误地运作:

以下网址产生以下错误(所有hash值均有效,但不应影响网址解析):

  

内部服务器错误:/ my_app / 841211121 / preview /

     

NoReverseMatch at / my_app / 841211121 / preview / Reverse for   带有参数'()'和关键字参数的'previewcontroller'   '{&#39; uuid':无,'哈希':'841211121&#39;}'找不到。 1种模式   尝试:   [&#39;(ΔP\ W +)????程序my_app / /预览/(P [A-f0-9] {8} - [A-f0-9] {4} - 4 [A-f0-9 ] {3} - [89ab] [A-f0-9] {3} - [A-f0-9] {12})/ $&#39;?]

     

请求方法:GET请求URL:   http://example.com/my_app/841211121/preview/   Django版本:1.10 ......

Regex101.com说网址应该匹配(当然有转义斜线)。为什么地球上第二组网址与preview网址不匹配,以及当没有previewcontroller字符串附加到网格时,是什么导致网址解析程序尝试将它们与uuid匹配URL?

1 个答案:

答案 0 :(得分:1)

Django正确解析/my_app/841211121/preview/并运行正确的视图。

Django运行Start视图时出现问题。看起来reverse()来电或{% url %}模板标记失败。