DRF
【python】web应用开发DRF框架
Django rest_framework, 简称 drf, 可以更方便的使用django写出符合 RESTful 规范的接口, (缩减编写api接口的代码)
Django REST framework是一个建立在Django基础之上的Web应用开发框架(Django的一个app),可以快速的开发REST API接口应用
在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程
不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作
REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持
REST framework提供了一个API 的Web可视化界面来方便查看测试接口
-
1、官方文档 : https://www.django-rest-framework.org/
-
2、GitHub : https://github.com/encode/django-rest-framework/tree/master
2.安装与快速使用(csrf禁用状态)
- 安装 drf
pip3 install djangorestframework
- models.py 文件书写模型类
from django.db import models
class Book(models.Model):
nid = models.AutoField(primary_key=True)
title = models.CharField(max_length=32)
price = models.DecimalField(max_digits=8,decimal_places=2)
author = models.CharField(max_length=16)
publish = models.CharField(max_length=16)
# 创建好模型类执行数据库迁移命令
- serializers.py 新建一个序列化类(该文件自己创建),如果如果是继承了ModelSerializer
from rest_framework.serializers import ModelSerializer
from drf_test import models
class BookSerializers(ModelSerializer):
class Meta:
model = models.Book # 指明该序列化器处理的数据字段从模型类Book参考生成
fields = "__all__" # 指明该序列化器包含模型类中的哪些字段,’all‘指明包含所有字段
果类继承的是Serializer,也就是继承了基类,那么这个我们要写的类的写法就是和model里面差不多,,格式如下:
序列化的使用
在view里面写逻辑的时候,比如我们将查询出来的数据,要返回给前段,那么就需要序列化查询出来的数据,那么就需要使用序列化器,使用方法如下:
如果前端传过来数据,我要进行反序列化咋办,将instace 这个属性变为data属性就行,就是属性不一样,其他的都一样。
具体源码就是:
将查询出来的数据返回给前段,有可能查询出多条数据,咋返回了:
book_data = serializers.BookModelSerializers(book_obj).data #单条数据序列化
book_data = serializers.BookModelSerializers(book_query,many=True).data
#不管是一条还是多条,只要数据是被[]嵌套,都要写many=True
- views.py 书写视图类
参考:DRF框架(四)——序列化器和反序列化器-腾讯云开发者社区-腾讯云
2、DRF框架入门介绍_给你骨质唱疏松的博客-CSDN博客