当前正在学习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: []
答案 0 :(得分:0)
对于给定的网址
url(r'^(?P<module_name>\w+)/(?P<area>\w+)/(?P<vocab_name>\w+)/Review$', views.review, name='review')
您显然拥有三个变量路径参数,module_name
,area
和vocab_name
。最后一个不是可变路径参数,因此不应包含在反向URL中
{% url 'module:review' module.name area vocabs.name 'Review' %}
正确的方法是
{% url 'module:review' module.name area vocabs.name %}
有关其他内容,您可以查看Django documentation的这一部分。