2011-01-06 8 views
9

私の質問は簡単ですが、DjangoでHTTPステータス405(メソッドは使用できません) @require_POSTデコレータを使用していますか?@require_POSTを使用しているときにDjangoのHTTPステータス405(メソッドは使用できません)のカスタムエラーページを表示するには

私はdjango.views.decorators.http.require_POSTデコレータを使用しています.GETリクエストでページを訪問すると、コンソールに405エラーが表示されますが、ページは空白になります(Djangoエラーページさえありません)。このようなエラーのためにDjangoにカスタムおよび/またはデフォルトのエラーページを表示させるにはどうすればよいですか?

EDIT: 私はテンプレートフォルダに404.html、500.html、405.htmlのページを置こうとしましたが、どちらも役に立ちません。私はまた、DEBUG = TrueFalseの間で変化しました。無駄です。

答えて

12

カスタムDjangoミドルウェアを作成する必要があります。あなたはこの1で始まり、405.htmlファイルがように存在しているかどうかを確認するためにそれを拡張することができます

http://docs.djangoproject.com/en/dev/topics/http/middleware/

チェックドキュメントを使用すると、ミドルウェアをインストールする方法がわからない場合問題は405件のステータスを返していません - - PR

http://mitchfournier.com/2010/07/12/show-a-custom-403-forbidden-error-page-in-django/

+0

ありがとうございます - それは今とても明らかです!しかし、私が予想していたよりもはるかに多くのトラブル。 –

0

documentationとdjango.views.defaultsのソースコードを調べると、404と500のエラーのみが404.html respを追加するだけでサポートされていることがわかります。 500.htmlをテンプレートディレクトリに追加します。

あなたも読むことができます

返信DjangoのHTTPエラーコード は簡単です。 HttpResponseのサブクラスには、 HTTPステータスコードが200 (「OK」を意味します)以外のものがあります。 の利用可能なサブクラスの完全なリストは、リクエスト/応答のドキュメントを参照してください。あなたは405エラーを返すようにしたい場合は

はこのように、私はそれが可能だかわからないHttpResponseNotAllowed class

example

+0

私はあなたが質問に答えていない怖い:あなたはまた、この記事をチェックすることができますoblemは@require_POSTデコレータを使用している間、その応答のテンプレートを表示しています。 –

+0

あなたは正しいです、あなたがデコレータを使用している情報を見逃しました。 –

0

を使用する必要があります。おそらくあなたはバグレポートを提出することを検討すべきです。

+0

さて、私たちはそれが可能であることを知っています。しかし、それは404と500のページを追加するだけで簡単です。@require_POSTなどのための組み込みのデコレータがあると考えると、それがより簡単になると期待しています。 –

関連する問題