1.1 DRF视图回顾
Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。REST framework提供了一个API 的Web可视化界面来方便查看测试接口。
特点
-
提供了定义序列化器的方法,可以快速将对象转为字典,便于序列化;
-
提供了丰富的类视图、Mixin扩展类,简化视图的编写;
-
丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
-
多种身份认证和权限认证方式的支持;[jwt]
-
内置了限流系统;
-
直观的 API web 界面;【方便我们调试开发api接口】
-
可扩展性,插件丰富
序列化与反序列化
序列化定义:
序列化器,将模型类对象转为字典,然后经过Response转为json字符串,便于在网络中传输。
反序列化定义:
将json字符串,经过Request对象转为字典或类字典,然后经过序列化器转为模型类对象
模型类创建
class BaseModel(models.Model):
created_time = models.DateTimeField("", auto_now_add=True) # auto_now_add=True 创建时间
updated_time = models.DateTimeField("", auto_now=True) #auto_now=True 更新时间
is_delete = models.BooleanField(default=False)
class Department(BaseModel):
"""
部门
"""
name = models.CharField(max_length=30)
class Meta:
db_table = 'tb_department'
def __str__(self):
return self.name
class Duty(BaseModel):
"""
职务
"""
name = models.CharField(max_length=30, verbose_name='职务名称')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_duty'
class Staff(BaseModel):
"""
员工
"""
SEX_CHOICE = (
(1, '男'),
(2, '女')
)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
name = models.CharField(max_length=30, verbose_name='姓名')
sex = models.IntegerField(choices=SEX_CHOICE, default=1, verbose_name='性别')
phone = models.CharField(max_length=11, verbose_name='手机号')
email = models.EmailField(max_length=60, verbose_name='邮箱')
census_register = models.CharField(max_length=200, verbose_name='户籍')
picture = models.ImageField(upload_to='staff_pic', verbose_name='员工照片')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_staff'
# p
# icture = models.ImageField(upload_to='staff_pic', verbose_name='员工照片')