1

我有一个由 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/terms 上不断收到 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/-页面似乎在那里..我很惊讶为什么会这样:(

任何帮助都会启发我!

4

1 回答 1

1

最后/是你问题的罪魁祸首。localhost/terms不匹配'^terms/$'正则表达式,localhost/terms/可以。

您可以/在最后使用?

url(r'^terms/?$', TermsTemplateView.as_view(), name='terms'),

UPD:请注意,该问题有更好的解决方案APPEND_SLASH

当设置为 True 时,如果请求 URL 与 URLconf 中的任何模式都不匹配并且它不以斜杠结尾,则会向附加斜杠的同一 URL 发出 HTTP 重定向。

另见:

于 2013-08-02T19:07:04.970 回答