Django REST Framework--视图

Django REST Framework--视图

一、功能

实现后台功能的核心
DRF:视图基于类------CBV

二、方法

  1. 一般用法
#在views.py中
from rest_framework.viewsets import ModelViewSet
from .models import 库名
from .serializs import 库名Serializer

class StudentViewset(ModelViewSet):
    queryset = 库名.objects.all()
    serializer_class = 库名Serializer
  1. 有外键时的用法
from rest_framework.viewsets import ModelViewSet
from rest_framework.response import Response
from rest_framework import status
from .models import 数据库名
from .serializer import 库名Serializer

class 库名ViewSet(ModelViewSet):
    queryset = 库名.objects.all()
    serializer_class = 库名Serializer
    #添加方法(执行post请求)
    def create(self,request,*args,**kwargs):
       #接收前端数据
        rec = request.data
		#用rec.get('传过来json数据的key')
        try:
            数据库名.objects.create(field=rec.get('key')....)
            return Response({'msg':'添加成功'},status= status.HTTP_201_CREATED) 
        except Exception as e:
            return Response({'error':'添加失败%s'%e},status=status.HTTP_400_BAD_REQUEST)
        
    #修改方法(包含有put、patch两种请求)
    def update(self,request,*args,**kwargs):
       #接收前端数据
        rec = request.data
		#用rec.get('传过来json数据的key')
        try:
            数据库名.objects.filter(id=kwargs.get('id')).update(field=rec.get('key')....)
            #update可以是多个傎,也可以是部分值。
            #可以是1.field=value...
            #2. **rec(对字典解析)
            return Response({'msg':'修改成功'},status= status.HTTP_201_CREATED) 
        except Exception as e:
            return Response({'error':'修改败%s'%e},status=status.HTTP_400_BAD_REQUEST)

以下代码是有对python类继承,继承关系有深入理解。如果你不了解,上面的代码已经够用了

三、源码解析

  1. 基础类是APIView解决请求分的问题。
    其中dispatch函数是分配请求方式。有
    get
    post
    put
    patch
    delete
    在这里插入图片描述

  2. GenericAPIView是解决数据库与序列化简化代码
    queryset = 库名.objects.all()
    serializer_class = 库名Serializer

  3. Mixin是解决序列化与反序列化简化代码
    list查所有数据
    create添加数据
    retieve查看单个数据
    update更新单个数据(put、patch请求)
    destory删除单个数据
    ListModelMixin–self.list()
    CreateModelMixin–self.create()
    RetieveModelMixin–self.retieve(request,pk)
    DestroyModelMixin–self.destory(request,pk)
    UpdateModelMixin–self.update(request,pk)

list、create自由组合
retrieve、update、destroy自由组合
4. ModelViewSet解决序列化与反序列化高度集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值