url捕获的正则表达式(\w+)与某些url不匹配

2024-04-28 20:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

my_app的url.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'),

以下URL正常工作:

以下url产生以下错误(所有hash值都有效,但不应影响url分辨率):

Internal Server Error: /my_app/841211121/preview/

NoReverseMatch at /my_app/841211121/preview/ Reverse for ‘previewcontroller’ with arguments ‘()’ and keyword arguments ‘{'uuid’: None, ‘hash’: ‘841211121'}’ not found. 1 pattern(s) tried: ['my_app/(?P\w+)/preview/(?P[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12})/$']

Request Method: GET Request URL: http://example.com/my_app/841211121/preview/ Django Version: 1.10...

Regex101.com说url应该匹配(当然是转义斜杠)。究竟为什么第二组url与previewurl不匹配,当url没有附加uuid字符串时,是什么促使url解析器尝试将它们与previewcontroller匹配


Tags: tonamecomviewapphttpurluuid