Django Rest Framework 在序列化程序中返回 403

如何使用 django rest 框架的序列化程序返回不同的错误代码?


我的serializer.py文件中有:


    def create(self, validated_data):

        if 'Message' not in validated_data:

            # If message is blank, don't create the message

            return PermissionDenied()

但是当我这样做时,它只是返回201正文{"deleted":null}而不是返回403错误。


我怎样才能让它返回403错误?


牧羊人nacy
浏览 283回答 2
2回答

慕码人8056858

您可以validate_message按如下方式覆盖该方法:from rest_framework.exceptions import ValidationErrordef validate_message(self, message):    if not message:        raise ValidationError('error message here')    return message请注意, ValidationError 将返回一个400 Bad Request状态代码,这在POST数据中缺少必填字段时更好

白衣染霜花

首先,您需要添加一个自定义异常类,如下所示,from rest_framework import exceptionsfrom rest_framework import statusclass CustomAPIException(exceptions.APIException):    status_code = status.HTTP_403_FORBIDDEN    default_code = 'error'    def __init__(self, detail, status_code=None):        self.detail = detail        if status_code is not None:            self.status_code = status_code并在您想要的任何地方使用该课程,if some_condition:    raise CustomAPIException({"some": "data"})这个特定类的最大优点之一是您可以通过指定status_code参数Ex来引发带有自定义状态代码的 API 异常。if some_condition:    raise CustomAPIException({"some": "data"},status_code=status.HTTP_409_CONFLICT)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python