4

Django 1.1.1 安定版を使用しています。がDjango flatpagesDEBUGに設定されている場合、正しく動作します。アクセスしようとするすべてのフラットページでカスタム 404 エラーが発生するのはいつですか (私のエラー テンプレートは明らかに正しく機能しています)。True DEBUGFalse

インターネットで検索すると、私が行った 404 および 500 テンプレートの作成が示唆されます。

middleware_classes に追加FlatpageFallBackMiddlewareし、flatpages をインストール済みアプリケーションに追加しました。フラットページを機能させる方法はありますか?

4

5 に答える 5

6

404ビューが200ステータス応答を送信していることに気付くまで、同じことが起こりました。したがって、404 応答を処理するビューにこれを追加するだけです。

def 404_handler(request):    ...

    response = render_to_response('404.html', locals(), context_instance=RequestContext(request))
    response.status_code = 404
    return response
于 2010-05-11T11:56:47.840 に答える
1

FlatpageFallBackMiddleware前に追加してみてくださいdjango.middleware.common.CommonMiddleware

404.html と 500.html がテンプレート ディレクトリのルートに保存されていることを確認してください(eg: templates/404.html)

于 2010-02-28T01:23:47.087 に答える
0

重要なのは、ミドルウェアの順序を確認することです。ミドルウェアは、インの途中(リクエストとビュー)はトップダウンの順序で実行され、アウトの途中(レスポンスと例外)はボトムアウトの順序で実行されます。したがって、完全に妥当なフラットページ URL で 404 ハンドラーにアクセスしている場合、フラットページ ミドルウェアが呼び出される前に何かが 404 をキャッチしています。

于 2010-02-27T21:17:17.597 に答える
0

別のコンテキストで同じエラーが発生しました。問題は、私がファイルurls.pyを変更したことが原因でした

from django.conf.urls.defaults import *

from django.conf.urls.defaults import include, patterns

で示唆されているようにpylint、これは import によって暗黙的にインポートされると予想される handler404 と handler500 を省略します*

したがって、それらをインポートに追加するか*、djangoドキュメントが示唆するようにインポートするだけで問題が解決しました。

于 2010-05-31T05:44:10.980 に答える