1

djangoアプリケーションから返されるエラーメッセージを整理しようとしていますが、空のコンテンツを持つHttpResponseBadRequestオブジェクトのサブクラスで問題が発生しています。

views.py:

class HttpNoContentAvailable(django.http.HttpResponseBadRequest):
    content = "Must add content before making this request."

def get_content(request, project_id):
    project = Project.objects.get(pk=project_id)
    if not project.has_content():
        return HttpNoContentAvailable()
    ...

これは次のように機能します。

def get_content(request, project_id):
    project = Project.objects.get(pk=project_id)
    if not project.has_content():
        return HttpNoContentAvailable("Must add content before making this request.")
    ...

私のアプリケーションでは、コンテンツの有無によって同じ400の応答を返す必要のあるビューがたくさんあるので、応答のコンテンツを1か所に保存したいと思います。さらに「興味深い」ことに、開発サーバーで実行されている単体テストに合格します。正しいコンテンツを含むHTTP 400応答を取得しますが、本番環境で実行すると、コンテンツを含まないHTTP400応答を取得します。

HTTP 400応答を取得して正しいコンテンツを取得するにはどうすればよいですか?(または、より一般的には、応答コンテンツを1回だけ保存するという目標を達成するために、コードをどのように編成することを提案しますか?)

4

1 に答える 1

2

コンテンツをクラス変数として定義するのではなく、サブクラスのコンストラクターをオーバーライドする必要があります。

例えば:

 def __init__(self):
         super(django.http.HttpResponseBadRequest, self).__init__("Must add content before making this request.")
于 2012-06-04T20:30:45.813 に答える