为了账号安全,请及时绑定邮箱和手机立即绑定

在创建方法 django rest 框架中引发错误

在创建方法 django rest 框架中引发错误

德玛西亚99 2022-05-19 16:09:37
ValidationError我在验证我的clean方法中的数据时抛出models.py. 如何在我的自定义create方法中捕获此错误,以便它以这种方式抛出包含错误详细信息的 json 对象{    "detail":"input is not valid"}#models.pyclass Comment(models.Model):    text = models.CharField(max_length=256)    commenter = models.ForeignKey(User, on_delete=models.SET_NULL)    post = models.ForeignKey(Post, on_delete=models.SET_NULL)    def clean(self, *args, **kwargs):        if containsBadWords(text):            raise ValidationError(_("Be Polite"))#serializer.pydef create(self, validated_data):    request = self.context.get('request', None)    commenter = request.user    try:        obj = Comment.objects.create(            post = validated_data['post'],            commenter = commenter,            text = validated_data['text']        )    except ValidationError as ex:        raise ex    return obj
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

检查你是否抛出了serializers.ValidationErrornot ValidationErrorof django.core.exceptions。您可以通过以下方式更改您的create方法:


def create(self, validated_data):

    request = self.context.get('request', None)

    commenter = request.user

    try:

        obj = Comment.objects.create(

            post = validated_data['post'],

            commenter = commenter,

            text = validated_data['text']

        )

    except ValidationError as ex:

        raise serializers.ValidationError({"detail": "input is not valid"})

    return obj


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号