一、环境搭建
Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API
官网:Home - Django REST framework
中文文档:主页 - Django REST framework中文站点
1.1、安装
Python3.8+
pip install django==4.1.1
pip install djangorestframework==3.14.0
1.2、settings配置
首先新建一个django项目
然后如果要启用REST framework,那么需要将其添加到
INSTALLED_APPS 中
INSTALLED_APPS = [
...
'rest_framework'
]
二、序列化与反序列化
当前WEB API应用中,前端要用到从后台返回的数据来渲染页面的时候,一般都是使用的json类型的数据,因为json类型简单直观便于理解,那么就需要在django框架中,将模型类数据序列化为json
2.1、建立模型
class Student(models.Model):
SEX_CHOICES = ((1,'男'), (2, '女'))
name = models.CharField(max_length=20,verbose_name='姓名')
age = models.IntegerField(null=True,blank=True, verbose_name='年龄')
sex = models.IntegerField(choices=SEX_CHOICES, default=1, verbose_name='性别')
class Meta:
db_table='t_student'
2.2、迁移模型
在迁移之前,需要正确配置settings当中的数据库信息
数据库配置
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME': 'django_rest',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
}
}
迁移模型
python manage.py makemigrations
python manage.py migrate
2.3、创建序列化类
在子应用的目录下,新建app_serializers.py 文件,在其中建立一个对应第一步建立的模型的序列化类:
from rest_framework import serializers
from rest_app.models import *
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ['id', 'name', 'age','sex']
说明:
-
继承自serializers.ModelSerializer类
-
必须实现class Meta
- model 的值为对应的模型类
- fields 的值是要序列化的字段,设置为 fields =
'__all__'
则使用所有模型的字段,也可以使用 exclude 指明要排除的字段,例如:exclude = ['id'] , 通常使用 fields
-
继承自ModelSerializer类,其实是一种快捷的方式,也可以直接继承serializers.Serializer,手动写字段集以及 create、update方法。ModelSerializer有一个 repr 属性来查看字段集是如何编写的
-
打开django脚本控制台,测试执行模型的方法
python manage.py shell
-
测试
from rest_app.app_serializers import StudentSerializer stu_serializer = StudentSerializer() print(repr(stu_serializer))
测试数据
insert into t_student (name,age,sex) values ('Python',18,1); insert into t_student (name,age,sex) values ('Django',20,1); insert into t_student (name,age,sex) values ('测试',22,2);