1

ListViews、TemplateViewsなどで構成されるdjangoアプリをセットアップしました。そのため、次のように小さなtemplateviewを追加しました。

#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 のどのパターンにも一致せず、スラッシュで終わっていない場合、HTTP リダイレクトが同じ URL にスラッシュが追加されて発行されます。

以下も参照してください。

于 2013-08-02T19:07:04.970 に答える