我有一个由ListViews,TemplateViews等组成的django应用程序。 所以,我只是添加了一个小模板视图:
#views.py
class TermsTemplateView(TemplateView):
template_name = "terms.html"
#urls.py
url(r'^terms/$', TermsTemplateView.as_view(), name='terms'),
并且在terms.html中,我用于链接:
<a href="{% url 'terms' %}">Terms & Conditions</a>
由于某些奇怪的原因,我在localhost /条款上持续获得404,如下所示:
404: No <model_name> found matching the query
我很困惑为什么会突然发生这种情况。我为"about", "thanks", "contact"
页设置了相同的设置,它们似乎没有问题地显示它。
..最糟糕的是,如果我像这样修改urls.py:
url(r'^/terms/$', TermsTemplateView.as_view(), name='terms'),
然后转到http://127.0.0.1:8000//terms/
- 页面似乎在那里..我很惊讶为什么会这样:(
任何帮助都会启发我!
答案 0 :(得分:1)
最后/
是你问题的罪魁祸首。 localhost/terms
与'^terms/$'
正则表达式localhost/terms/
不符。
您可以使用/
?
url(r'^terms/?$', TermsTemplateView.as_view(), name='terms'),
UPD:请注意,问题有一个更好的解决方案,APPEND_SLASH:
设置为True时,如果请求URL与任何一个都不匹配 URLconf中的模式并不以斜杠(HTTP)结尾 重定向发送到相同的URL并附加斜杠。
另见: