2016-11-10 15 views
2

カスタム404テンプレートをdjangoでレンダリングしました。 カスタム404ページがDjangoで「404 ok」という応答を返すのはなぜですか?

def custom_page_not_found(request): 
    response = render_to_response('404.html', {}, 
           context_instance=RequestContext(request)) 
    response.status_code = 404 
    return response 

そして私は、私は、「見つからない404」を持つことができない理由を知ってかなり興味: は、私はそれの基本的に開始することを決めました。 urls.pyからhandler404を使用しないと、空の404ページに現在のステータスが表示されます。 しかし、私はカスタムテンプレートを持ちたいと思っていません。

誰でも知っていますか?それは(例えば、「見つかりません」に)設定されていない場合ジャンゴ1.9+で(ジャンゴ1.7.11)

+0

404ページにカスタムテンプレートを使用するだけの場合は、「handler404」を設定するかカスタムビューを作成する必要はありません。あなたのテンプレートディレクトリに '404.html'テンプレートを貼り付けるだけです。 – Alasdair

+0

ご意見ありがとうございます。しかし、何らかの目的のためにカスタムビューを使用する必要がある場合、適切な '404 not found' HTTPレスポンスを取得できませんか? –

+0

もちろん可能です。しかし、あなたの質問は非常に混乱しています。 "404 ok"のようなものはありません、 "200 ok"を返しているという意味ですか? –

答えて

2

status_code(例えば404)を変更するreason_phraseを変更します。しかし、古いバージョンのDjangoを使用しているので、手動でreason_phraseを変更する必要があります。それ以外の場合は「ok」のままです。

レスポンスの作成時にステータスを設定する方が簡単です。

def custom_page_not_found(request): 
    return render_to_response('404.html', {}, 
           context_instance=RequestContext(request), 
           status=404) 

render_to_responseショートカットが廃止されているので、代わりにrenderを使う方が良いでしょう。

def custom_page_not_found(request): 
    return render(request, '404.html', {}, status=404) 
+0

男、あなたは私の日の日差しです(ロンドン天気)。私はずっとそれに執着していた。 ありがとうございました! –

関連する問題