我是Django的新手,所以我希望会有一些混乱,但是我认为这个很有趣所以我对以下内容感到困惑,我有链接A和链接B(都做同样的事情)......
urls.py
url(r'^testing/([\w\s-].+)/(?P<id>[0-9]+)$', 'testapp.views.test_view', name='test'),
模板页面
<a href="{% url 'test' i.name i.id %}">{{i.name}}</a>
<a href="{% url 'test' i.name i.id %}">{{i.name}}</a>
链接A通过,而链接B产生以下错误:
Exception Type: NoReverseMatch
Reverse for 'test' with arguments '('8', '109404')' and keyword arguments '{}' not found. 1 pattern(s) tried: ['test/([\\w\\s-].+)/(?P<id>[0-9]+)$']
我已经尝试封装参数,仔细检查传递的数据,我甚至尝试通过链接A和B传递相同的数据。
是否有同样的问题?我错过了什么?
答案 0 :(得分:0)
问题在于您的第一个捕获组:
r'([\w\s-].+)'
这里首先是一个没有量词的字符集:[\w\s-]
。这匹配单个字符。然后你有一个带有+
量词的点(任何字符),即一个或多个。这意味着您至少需要两个字符:一个匹配[\w\s-]
,一个或多个匹配.+
。
你可能想要捕获第一个字符集一次或多次,即:
r'([\w\s-]+)'