前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django-DRF | 验证器

Django-DRF | 验证器

作者头像
小团子
发布2020-02-20 18:28:26
1.7K0
发布2020-02-20 18:28:26
举报
文章被收录于专栏:数据云团

Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

多数时候,在 REST 框架中处理验证时,只需要依赖默认的字段验证,或者在序列化程序和字段类上编写显式验证方法。

在开发 REST API 接口时,在视图中需要做的最核心的事:

  • 将数据库数据序列化作为前端所需要的格式,并返回。
  • 将前端发送的数据反序列化作为模型类对象,并保存到数据库中。

每个视图具体操作的数据不同,但增、删、改、查的实现流程都可以复用简化编写:

  • :校验请求数据 ---> 执行反序列化过程 ---> 保存数据库 ---> 将保存的对象序列化并返回
  • :判断要删除的数据是否存在 ---> 执行数据库删除
  • :判断要修改的数据是否存在 ---> 校验请求的数据 ---> 执行反序列化过程 ---> 保存数据库 ---> 将保存的对象序列化并返回
  • :查询数据库 ---> 将数据序列化并返回

REST 框架的验证

Django REST 框架序列化器中的验证处理方式:ModelForm

ModelForm 验证部分在表单上执行,部分在模型实例上执行。使用 REST 框架,验证完全在序列化程序类上执行。

代码语言:javascript
复制
class CustomerReportRecord(models.Model):
    reference = models.CharField(unique=True, max_length=20)
    description = models.TextField()
    create_at = models.DateTimeField(default=timezone.now, editable=False)
代码语言:javascript
复制
class CustomerReportSerializer(serializers.ModelSerializer):
    class Meta:
        model = CustomerReportRecord

命令行执行 python manage.py shell

代码语言:javascript
复制
>>> from serializers import CustomerReportSerializer
>>> serializer = CustomerReportSerializer()
>>> print(repr(serializer))
CustomerReportSerializer():
    id = IntegerField(label='ID', read_only=True)
    create_at = DateTimeField(read_only=True)
    reference = CharField(max_length=20, validators=[<UniqueValidator(queryset=CustomerReportRecord.objects.all())>])
    description = CharField(style={'type': 'textarea'})
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档