2012-12-26 130 views
0

爲什麼這會返回NoReverseMatchNoReverseMatch Django:關鍵字參數

HTML:

{% url vote thing.id thing.slug %} 

urls.py:

url(r'^vote/(?P<object_id>\d+)/(?P<slug>[w\-]+)/$', 'app.views.the_view', name='vote'), 

views.py:

def the_view(request, object_id, slug): 
    thing_list = Thing.objects.all() 
    return render(request, 'vote.html', {'thing_list':thing_list}) 

回答

2

,你必須使用以下方法:

{% url vote object_id=thing.id slug=thing.slug %} 

,因爲您已明確命名模式中的匹配組。

注意,從的Django 1.5開始,你必須做到:代替

{% url 'vote' .. %} 

{% url vote ..%} 

看到它在Django文檔這裏https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#url

+0

感謝我試着使用關鍵字參數,你建議,但仍然得到NoReverseMatch。任何其他的想法可能是罪魁禍首?謝謝 –

+0

你的模式列表中是否還有其他URL?一個常見的錯誤是在狹義模式之前放置寬匹配模式(例如,如果在r'^ vote/$'之前列出r'^(?P​​。*)/ $')導致第一個模式的恆定匹配。 – ppetrid

相關問題