web-dev-qa-db-ja.com

DjangoでHTTP 400応答を返す方法は?

要求GETデータが無効で解析できない場合、Djangoビュー関数からHTTP 400応答を返します。

どうすればいいですか? 404のような対応するExceptionクラスはないようです:

raise Http404
53
markmnl

以前のコメントから:

HttpResponseBadRequest を返すことができます

また、Http404などのExceptionサブクラスを作成して、独自のHttp400例外を作成できます。

よろしく、

43
Ambroise

次のことができます。

from Django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation("Invalid request; see documentation for correct paramaters")

SuspiciousOperationは、 https://github.com/Django/django/blob/master/Django/core/handlers/base.py の207行目の400応答にマッピングされます

22
Brian Chapman

Django Rest Frameworkを使用している場合、ビューで400応答を上げるには2つの方法があります。

from rest_framework.exceptions import ValidationError, ParseError

raise ValidationError

# or 
raise ParseError
12
rgilligan