我是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传递相同的数据。
有没有人有同样的问题?我遗漏了什么?
发布于 2016-01-21 06:27:56
问题出在你的第一个捕获组中:
r'([\w\s-].+)'在这里,首先有一个不带限定符的字符集:[\w\s-]。这与单个字符匹配。然后有一个带有+量词的点(任意字符),即一个或多个。这意味着您至少需要两个字符:一个匹配的[\w\s-]和一个或多个匹配的.+。
您可能想要捕获第一个字符集一次或多次,例如:
r'([\w\s-]+)'https://stackoverflow.com/questions/34911774
复制相似问题