【发布时间】:2012-12-17 23:10:03
【问题描述】:
我很难调试这个特定的错误。我的urls.py 中有以下内容:
url(r'^report/(?P<share_url>\w+)/$', 'share',
name='share'),
url(r'^report/(?P<share_url>\w+)/revoke/$', 'share_revoke',
name='share_revoke'),
在views.py 我有:
def share(request, share_url):
...
@login_required
def share_revoke(request, share_url):
...
在我的模板中,我有:
<a href='{% url share share_url %}'>Share</a>
<a href='{% url share_revoke share_url %}'>Revoke</a>
当我尝试加载此模板时,我得到一个NoReverseMatch:
/mypath/ 处的 NoReverseMatch
未找到带有参数“(u'Sh4rE',)”和关键字参数“{}”的“share_revoke”的反向操作。
为什么第二个网址失败而不是第一个?我已登录。
在 shell 上试试这个:
>>> reverse('share',args=(u'klajsdf',))
'/report/klajsdf/'
>>> reverse('share_revoke',args=(u'klajsdf',))
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/ubuntu/virt/virt1/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 476, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/home/ubuntu/virt/virt1/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 396, in _reverse_with_prefix
"arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'share_revoke' with arguments '(u'klajsdf',)' and keyword arguments '{}' not found.
【问题讨论】:
-
试试这个 SO 问题并回答stackoverflow.com/questions/1842389/…
-
验证 share_revoke share_url 是否包含正确的数据
-
@RickardZachrisson 确实如此。
-
你的意思是
'share'而不是'share_url'实际上在reverse('share_url',args=(u'klajsdf',))? -
@okm 是的,我愿意,好地方