DRF五大接口

本文介绍了DRF(Django Rest Framework)的基础,包括面向对象封装、基础的五大接口(数据准备、解析、响应等)以及在项目开发中的CBV(Class-Based Views)设计。同时,讲解了路由、解析、响应模块,并重点探讨了版本控制模块,提供了基础配置和通过请求参数、URL完成版本配置的方法。
摘要由CSDN通过智能技术生成

面向对象封装

面向对象封装导入

# 面向对象的封装:
# 1.将子类共有的方法抽离形成父类
# 2.子类使用共有方法,使用的是父类方法
# 3.共有方法中的资源,在子类使用方法时,获取的是子类资源
class MyCls:
    name = None
    @classmethod
    def test(cls):
        print(cls.name)
​
class ACls(MyCls):
    name = "ACls"
    # @classmethod
    # def test(cls):
    #     print(cls.name)
​
class BCls(MyCls):
    name = "BCls"
    # @classmethod
    # def test(cls):
    #     print(cls.name)
​
ACls.test()
BCls.test()

drf视图层面向对象封装应用

# drf已经做了 CBV 的面向对象封装,且还做了一步精髓之笔,重写了as_view()
class GetListCls: pass # get_list
class PostOneCls: pass # post_one
class GetOneCls: pass # get_one
class PutOneCls: pass # put_one
class DeleteOneCls: pass # delete_one
​
# get_list | post_one | get_one | put_one | delete_one
class MyCls(GetListCls, PostOneCls, GetOneCls, PutOneCls, DeleteOneCls): pass
​
# get_list | post_one 
class Books(GetListCls, PostOneCls): pass
# get_list | post_one | get_one | put_one | delete_one
class BookView(MyCls): pass
# get_list | post_one | get_one | put_one | delete_one
class AuthorView(MyCls): pass

 

 

基础的五大接口:基础

数据准备

# settings.py
INSTALLED_APPS = [
    # ...
    'rest_framework',
]
​
# models.py 手动形成数据
class Book(models.Model):
    name = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    author = models.ManyToManyField(to='Author', db_constraint=False)
​
class Author(models.Model):
    name = models.CharField(max_length=32)
    author_detail = models.OneToOneField(to='AuthorDetail', on_delete=models.SET_NULL, null=True, db_constraint=False)
​
class AuthorDetail(models.Model):
    age = models.IntegerField()
    telephone = models.CharField(max_length=32)
    
# objson.py
from rest_framework import serializers
from app import models
class AuthorDetailJson(serializers.ModelSerializer):
    class Meta:
        model = models.AuthorDetail
        fields = '__all__'
​
class AuthorJson(serializers.ModelSerializer):
    class Meta:
        model = models.Author
        fields = '__all__' 
​
class BookJson(serializers.ModelSerializer):
    class Meta:
        model = models.Book
        fields = '__all__'
        
# urls.py
from app import views
urlpatterns = [
    # ...
    url(r'^book
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值