栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django Rest Framework序列化程序中的自定义错误消息

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django Rest Framework序列化程序中的自定义错误消息

这个问题仍然有一些看法,因此必须注意还有另一种方法,它比我在此处发布的原始答案要干净得多。

你可以只使用序列化程序的meta类的extra_kwargs属性,如下所示:

class UserSerializer(ModelSerializer):    class meta:        model = User        extra_kwargs = {"username": {"error_messages": {"required": "Give yourself a username"}}}

原始答案:

使用@mariodev的答案,我在项目中创建了一个新类,该类可以执行以下操作:

from rest_framework.serializers import ModelSerializer, ModelSerializerOptionsclass CustomErrorMessagesModelSerializerOptions(ModelSerializerOptions):    """    meta class options for CustomErrorMessagesModelSerializerOptions    """    def __init__(self, meta):        super(CustomErrorMessagesModelSerializerOptions, self).__init__(meta)        self.error_messages = getattr(meta, 'error_messages', {})class CustomErrorMessagesModelSerializer(ModelSerializer):    _options_class = CustomErrorMessagesModelSerializerOptions    def __init__(self, *args, **kwargs):        super(CustomErrorMessagesModelSerializer, self).__init__(*args, **kwargs)        # Run through all error messages provided in the meta class and update        for field_name, err_dict in self.opts.error_messages.iteritems(): self.fields[field_name].error_messages.update(err_dict)

第一个可以meta像一样向序列化器添加新的class属性

ModelForm
。第二个继承自
ModelSerializer
@mariodev的技术并使用它来更新错误消息。

剩下要做的就是继承它,然后做类似的事情:

class UserSerializer(CustomErrorMessagesModelSerializer):    class meta:        model = User        error_messages = {"username": {"required": "Give yourself a username"}}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/366822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号