12

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

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

編集: テンプレート フォルダーに 404.html、500.html、および 405.html ページを配置しようとしたことは言及する価値がありますが、それも役に立ちません。私も と の間DEBUG = Trueで変化Falseしましたが、役に立ちませんでした。

4

3 に答える 3

14

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

from django.http import HttpResponseNotAllowed
from django.template import RequestContext
from django.template import loader


class HttpResponseNotAllowedMiddleware(object):
    def process_response(self, request, response):
        if isinstance(response, HttpResponseNotAllowed):
            context = RequestContext(request)
            response.content = loader.render_to_string("405.html", context_instance=context)
        return response

ミドルウェアのインストール方法がわからない場合は、ドキュメントを確認してください。

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

この記事も確認できます。

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

于 2011-01-08T16:13:55.877 に答える
0

それが可能かどうかはわかりません。おそらく、バグレポートの提出を検討する必要があります。

于 2011-01-08T15:31:11.830 に答える
0

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

ドキュメント内。以下も読むことができます

DjangoでHTTPエラーコードを返すのは簡単です。200(「OK」を意味する)以外の多くの一般的なHTTPステータスコードのHttpResponseのサブクラスがあります。使用可能なサブクラスの完全なリストは、要求/応答のドキュメントにあります。

したがって、405エラーを返したい場合は、HttpResponseNotAllowedクラスを使用する必要があります。

_

于 2011-01-06T11:40:48.210 に答える