我试图在 get_absolute_url() 中使用反向函数,但它没有为 View 找到正确的反向匹配。我的 url.py 没有任何错误,因为我可以通过 url "traildetail/4"等访问该 View ,并且所有其他 url 都可以正常工作。

我有以下 View 函数:

def get_trail_detail(request, trail_id=None):
    '''
    '''
    return HttpResponse(str(trail_id))

我还在 urls.py 中定义了以下网址。
url(r'^traildetail/(?P<trail_id>\d{1,5})/$', 'get_trail_detail', name='get-trail-detail'),

因此,当我在 django shell 中运行以下代码时,出现 NoReverseMatch 错误:
reverse('trails.views.get_trail_detail',None, kwargs={'trail_id': '3'})
reverse('trails.views.get_trail_detail', args=[str(1)])
reverse('trails.views.get_trail_detail', kwargs={'trail_id': '3'})

对于上述所有尝试,我收到以下 错误::
    File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 416, in _reverse_with_prefix
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'trails.views.get_trail_detail' with arguments '()' and keyword arguments '{'trail_id': '3'}' not found
    enter code here

最佳答案

供将来引用 - 您可以像这样访问网址:

reverse('get-trail-detail', kwargs={'trail_id': 3})

关于get_absolute_url() 中的 Django reverse() 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16971428/

10-16 22:43