日常写代码中,一个视图增删改查是必不可少的,而DRF框架可以帮助我们复用简化编写的,帮助我们大大提高REST API的开发速度,其中有个很重要的点就是序列化器。
序列化器分为两类;
- 序列化功能:将对象转换为字典。
1)序列化单个对象
2)序列化多个对象
3)关联对象的嵌套序列化- 反序列化功能:
数据校验:补充验证
数据保存:新增create或更新update
For example:
工作时回答了一位同事的问题,现在模拟一个BUG实现并解答的问题
单独运行tests.py文件时出现了一个BUG,如下:
代码如下:
from rest_framework import serializers
import json
from booktest.models import BookInfo, HeroInfo
from booktest.serializers import BookInfoSerializer
# if __name__ == "__main__":
#
# hero = HeroInfo.objects.get(id=1)
#
# serializer = HeroInfoSerializer(hero)
#
# drf = serializer.data
#
# drf = json.dumps(drf, indent=1, ensure_ascii=False)
# print(res)
# if __name__ == "__main__":
# books = BookInfo.objects.all() # QuerySet
#
# serializer = BookInfoSerializer(books, many=True)
#
# drf = serializer.data
#
# drf = json.dumps(drf, indent=1, ensure_ascii=False)
# print(drf)
解决方法:
出现这个BUG是因为运行单个py文件时,需要指定设置Django运行所依赖环境变量,让django环境进行一次初始化,否则,会出现如上BUG,项目整个运行则不会发生。在文件的导包路径上方加几行代码就能解决这个问题,如下:
import os
if not os.environ.get('DJANGO_SETTINGS_MODULE'):
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "drf_demo.settings")
import django
django.setup()