网址不适合我

时间:2018-12-13 18:28:34

标签: python django

当前正在学习Django的方法。但是请注意以下内容。

html

<a href="{% url 'module:review' module.name area vocabs.name 'Review' %}" class="btn btn-primary btn-sm btn-block" role="button">Review</a>

url.py

url(r'^(?P<module_name>\w+)/(?P<area>\w+)/(?P<vocab_name>\w+)/Review$', views.review, name='review'),

views.py

def review(request,module_name,area,vocab_name):
try:
    vocabObj = Vocab.objects.get(name=vocab_name)
    if area == 'Vocab':
        reviewItems = vocabObj.vocabcontent_set.all()
    elif area == 'Phrase':
        reviewItems = vocabObj.phrasecontent_set.all()

except Modules.DoesNotExist:
    raise Http404("No Words found")
return render(request, 'module/reading.html', {'reviewItems': reviewItems}) 

我遇到的错误

NoReverseMatch at /Introduction/Vocab/
Reverse for 'review' with arguments '('Introduction', 'Vocab', 'Numbers', 'Review')' and keyword arguments '{}' not found. 0 pattern(s) tried: []

1 个答案:

答案 0 :(得分:0)

对于给定的网址

url(r'^(?P<module_name>\w+)/(?P<area>\w+)/(?P<vocab_name>\w+)/Review$', views.review, name='review')

您显然拥有三个变量路径参数,module_nameareavocab_name。最后一个不是可变路径参数,因此不应包含在反向URL中

{% url 'module:review' module.name area vocabs.name 'Review' %}

正确的方法是

{% url 'module:review' module.name area vocabs.name %}

有关其他内容,您可以查看Django documentation的这一部分。