面向对象封装
面向对象封装导入
# 面向对象的封装: # 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