python的通用视图与子类视图

本文主要探讨Django REST framework(DRF)的视图特性,包括其提供的序列化器、类视图、Mixin扩展类以及丰富的定制选项。DRF简化了视图编写,支持多种认证和权限管理,内置限流系统,并拥有直观的API Web界面,方便接口的调试和开发。
摘要由CSDN通过智能技术生成

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='员工照片')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值