DRF框架使用时的一些注意点

简介: DRF框架使用时的一些注意点

DRF框架使用时的一些注意点

之前的文章代码块在安卓手机显示正常,但是苹果手机总是不能滚屏,非常影响阅读。今天总算解决了这个问题,苹果手机显示正常了。希望给大家带来最好的阅读体验。喜欢的话就点一下好看,关注一下本公众号吧。

1.格式化数据

我们想要将字典数据格式化显示(默认显示的是一个字典在一行,可读性比较差),可以按下面的代码将其调整:

  1. # 格式化显示
  2. import json
  3. res = json.dumps(res_data, indent=4,ensure_ascii=False)
  4. print(res)
  5. ----------------------
  6. {
  7.    "id":1,
  8.    "btitle":"射雕英雄传",
  9.    "bpub_date":"1980-05-01",
  10.    "bread":12,
  11.    "bcomment":34,
  12.    "image": null
  13. }

indent代表的是缩进,ensure_ascii改为False可以将中文显示正常。

2.序列化器传值注意的小点

默认序列化器必须传递required的字段,否则会剖出验证异常。但是我们可以使用partial参数来允许部分字段更新。

  1. data ={'btitle':'射雕英雄传'}
  2. # 下面是创建序列化器对象
  3. serializer =BookInfoSerializer(book,data=data,partial=True)

在里面,我们定义字段的时候,btitle和bpub_date是设置了required,是必传项。我们只传一个值的时候,在校验过程是会失败的。我们指定了partial参数为True的时候,就是允许我们只修改btitle部分,校验时是不会报错的。

3.反序列化器的save特殊用法

我们在反序列化数据的保存和更新的时候,调用的save方法是可以进行传值的

  1.    # 获取id为1的图书
  2.    book =BookInfo.objects.get(id=1)

  3.    data ={
  4.        'btitle':'射雕英雄传2',
  5.        'bpub_date':'1980-10-1'
  6.    }

  7.    # 创建序列化器对象
  8.    serializer =BookInfoSerializer(book,data=data)

  9.    # 调用is_valid方法进行数据校验
  10.    print(serializer.is_valid())

  11.    print(serializer.errors)

  12.    # 反序列化-数据的保存
  13.    # save里面是可以传递参数的,我们在调用create和update的时候也是可以取的到值的。
  14.    serializer.save(a=1,b=3)

我们在调用save方法的时候,如果是新增数据的话,是调用了继承的父类的create方法,我们在序列化其类里面对其进行了重写;如果是更新数据的话,是调用了父类的update方法,我们在序列化器类里面也是对其进行了重写。

我们在save中进行传值的时候,这些额外的参数,在create和update被调用的时候也是接收的到的。

4.ModelSerializer的继承

使用:序列化器针对某个Django框架的模型类。

好处

1.依据模型类的字段自动生成序列化器类的字段

2.已经实现了create和update方法的代码

5.反序列化校验

反序列化校验数据的时候我们用到了is_valid方法:

  1. serializer.is_valid(raise_exception=True)

其实这个方法是可以传参数的,传入上面的rasise_exception参数。它默认是为False的,也就是如果校验失败的时候,给我们返回False。如果我们将参数的值改为True,那么在校验失败的时候不会给我们返回False,而是直接报错。

有人说这功能鸡肋,其实根据具体的需求而定,大家了解即可。

6.序列化&反序列化

这两个概念很重要,多次强调也不为过,因此再强调一遍,让大家加深一下印象。

6.1序列化

序列化复杂的概念不需要记忆,因为也记不住,那么绕。我们只需要明白一点就好了:

序列化做的事情就是将我们查找出来的模型类对象转化成json数据(字典)的一个过程

对象---->json/字典

6.2反序列化

同理,我们还是记住下面的一句话即可

前端获取到的数据保存为模型类对象的一个过程。

json/字典---->对象


相关文章
|
5月前
|
Python API 网络架构
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
|
8月前
|
JSON API 数据库
DRF框架学习(二)
DRF框架学习(二)
|
8月前
|
JSON 前端开发 API
DRF框架学习(一)
DRF框架学习(一)
|
8月前
|
JSON 前端开发 数据安全/隐私保护
DRF框架学习(四)
DRF框架学习(四)
|
8月前
|
JSON 前端开发 数据库
DRF框架学习(三)
DRF框架学习(三)
|
10月前
|
网络架构 Python
19-Django REST framework-DRF工程搭建
19-Django REST framework-DRF工程搭建
|
移动开发 前端开发 JavaScript
DSBridge框架使用说明
DSBridge框架使用说明
614 0
|
SQL 缓存 数据库连接
Yii2.0框架API文档中的ActiveRecord类是什么?底层原理是什么?
Yii2.0框架API文档中的ActiveRecord类是什么?底层原理是什么?
|
前端开发 JavaScript 数据处理
Yii2.0框架的MVC架构是如何设计的?它的流程是什么样的?
Yii2.0框架的MVC架构是如何设计的?它的流程是什么样的?
105 0
|
JavaScript
nuxt框架中的数据持久化最优解+请求拦截器封装
nuxt框架中的数据持久化最优解+请求拦截器封装
nuxt框架中的数据持久化最优解+请求拦截器封装