get_absolute_url()中的Django reverse()不起作用

时间:2013-06-06 20:20:01

标签: django django-views

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

我有以下视图功能:

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

1 个答案:

答案 0 :(得分:2)

供将来参考 - 您可以像这样访问网址:

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