4

Django-Tastypie にはImmediateHttpResponse例外があり、クライアントに即時応答を返すことができます。

raise ImmediateHttpResponse(response='a message')

Django にはHttp404がありますが、 のようなより普遍的な例外が見つかりませんでしたImmediateHttpResponse

クライアントにすぐに 400 応答を返すには、どのような手法を使用しますか?

たとえば、モデルを持っている:

class Subscriber(Model):

    def delete(self, *args, **kwargs):
        raise ImmediateHttpResponse('Deleting subcribers is not allowed!')

オブジェクトを削除しようとする400と、指定されたメッセージを含む応答がクライアントに返されます。

4

2 に答える 2

2

それは例外ではありませんがHttpResponseBadRequest、あなたの通常の である がありHttpResponseます400

Http404例外は単に空のExceptionクラスあり、特別なことは何もありません:

class Http404(Exception):
    pass

そのため、必要に応じて独自のものを簡単に作成できます。

class Http400(Exception):
    pass

ImmediateHttpResponseHttp404ジェネリックでもあるExceptionが、特定のプロパティを持つという点でそれほど違いはありません。これにより、次のようになりHttpResponseBadRequestます。

class ImmediateHttpResponse(TastypieError):
    """
    This exception is used to interrupt the flow of processing to immediately
    return a custom HttpResponse.

    Common uses include::

        * for authentication (like digest/OAuth)
        * for throttling

    """
    _response = HttpResponse("Nothing provided.")

    def __init__(self, response):
        self._response = response

    @property
    def response(self):
        return self._response
于 2013-07-15T09:38:29.840 に答える