首页 > 其他分享 >【DRF_02】基于Django CBV实现

【DRF_02】基于Django CBV实现

时间:2024-05-21 21:51:10浏览次数:15  
标签:02 return self args request Django CBV csrf kwargs

  • 路由系统
from django.urls import path
from app01.views import cbv_demo

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('cbv/demo/', cbv_demo.StudentsView.as_view()),
]
  • CBV视图
from django.views import View
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.utils.decorators import method_decorator

"""
CBV知识点:
1.流程:路由--》view--》dispatch(反射)
2.取消csrf认证,有两种方式。重写dispatch,装饰dispatch。直接装饰类:@method_decorator(csrf_exempt,name='dispatch')
3.csrf认证,是基于中间件的process_view中实现。
    中间件总共有5个方法,process_request,process_view,process_respones,process_exception,process_render_template
    流程:执行所有的process_request--》》路由匹配--》》执行所有的process_view-->>视图函数--》》执行process——response
    原因:我们在取消csrf认证的时候,加了装饰器-->>某个函数免除csrf认证--->>所以在认证的过程中需要判断函数有没有加装饰器--->>所以需要先做路由匹配,找到函数
"""
class MyBaseView(View):
    # @method_decorator(csrf_exempt)    # 1.免除csrf认证,必须在dispatch中使用在类中使用
    def dispatch(self, request, *args, **kwargs):
        print('before')
        ret = super(MyBaseView,self).dispatch(request, *args, **kwargs)
        print('after')
        return ret

# @method_decorator(csrf_exempt,name='dispatch')   # 2.直接装饰类
class StudentsView(MyBaseView,View):
    def get(self,request,*args,**kwargs):
        return HttpResponse('GET')

    def post(self,request,*args,**kwargs):
        return HttpResponse('POST')

    def delete(self,request,*args,**kwargs):
        return HttpResponse('DELETE')

    def put(self,request,*args,**kwargs):
        return HttpResponse('PUT')


class TeacherView(MyBaseView,View):

    def get(self, request, *args, **kwargs):
        return HttpResponse('GET')

    def post(self, request, *args, **kwargs):
        return HttpResponse('POST')

    def delete(self, request, *args, **kwargs):
        return HttpResponse('DELETE')

    def put(self, request, *args, **kwargs):
        return HttpResponse('PUT')
  • 实现效果

标签:02,return,self,args,request,Django,CBV,csrf,kwargs
From: https://www.cnblogs.com/xwltest/p/18205027

相关文章

  • DS1302时钟芯片使用51单片机
    51单片机使用DS1302实现时钟功能调试过程中出现了很多情况,LCD1602显示的数据和写入的数据不一样;秒不是1秒+1,而是过了近2秒才+1,而且是不连续,中家缺少一些数据不显示,用示波器看波形也是正常的,没有显示在LCD1602的波形,在示波器数据中是存在的。后来发现是DS1302_Read_Byte中出现了问......
  • APIO 2024 游记
    干的全是无意义事,所以写的游记也是无意义内容,感觉真是纯游了。标题怎么这么短?原来是技不如人清北营全都去不了,只能打这种花钱的没用比赛,哈哈......
  • [CSP-S 2023] 种树
      #include<bits/stdc++.h>#definelllonglong#definepbpush_back#definemxn100003#definerep(i,a,b)for(inti=a;i<=b;++i)#definerept(i,a,b)for(inti=a;i<b;++i)usingnamespacestd;intn,p[mxn],d[mxn],ct[mxn];lla[mxn],b[mxn],c[m......
  • MITIT 2024 Spring Invitational Finals
    A.DistanceMod5考虑一个点\(x\)向外的最短路树,如果两个点不满足\(dis_{i,x}=(dis_{j,x}+1)\bmod5\)或\(dis_{j,x}=(dis_{i,x}+1)\bmod5\),那么这两个点一定没有连边,否则可能有连边。去除掉所有不可能的连边,剩下的连上边,发现这样是最优的。然后floydcheck......
  • CSP历年复赛题-P1035 [NOIP2002 普及组] 级数求和
    原题链接:https://www.luogu.com.cn/problem/P1035题意解读:根据公式模拟法求解即可。解题思路:枚举i,计算sum,如果sum>k,则输出i100分代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){intk;cin>>k;doublesum=0;inti=0;while(......
  • CSP历年复赛题-P1036 [NOIP2002 普及组] 选数
    原题链接:https://www.luogu.com.cn/problem/P1036题意解读:题目即要在n个数中,枚举出所有的子集,当子集中数字个数刚好为k时,求和,判断是否是素数。解题思路:方法一:二进制法通过二进制法,可以枚举一个集合中所有元素“选”或者“不选”的情况,用二进制1表示选该元素,二进制0表示不选。......
  • 科学研究范式之2024,加一
    四大范式文章:科学研究范式与科学研究方法-是实的文章-知乎https://zhuanlan.zhihu.com/p/636048410发布于2023-06-1009:41科学研究范式:Thescientificresearchparadigm。本文列举了四种范式:第一范式:科学实验第二范式:理论科学第三范式:计算科学第四范式:大数据科......
  • CSP历年复赛题-P1023 [NOIP2000 普及组] 税收与补贴问题
    原题链接:https://www.luogu.com.cn/problem/P1023题意解读:给定商品单价和对应销量表,计算使得采用预期价格销售得到最大利润时的最小补贴或者税收。解题思路:1、样例模拟31281303012031110-1-115政府预期价格:31商品成本:28,按成本价售卖销量:130商品单价:30,对应销量:120......
  • CSP历年复赛题-P1028 [NOIP2001 普及组] 数的计算
    原题链接:https://www.luogu.com.cn/problem/P1028题意解读:给定n,构造数列,可以用递归或者递推。解题思路:1、递归定义count(n)返回数列的个数  n==1时,count(n)=1  n!=1时,count(n)=1+count(1)+count(2)+...+count(n/2)注意,递归会导致大量重复计算,需要用一个hash......
  • CSP历年复赛题-P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
    原题链接:https://www.luogu.com.cn/problem/P1029题意解读:已知x,y,求有多少对p、q,使得p、q的最大公约数为x,最小公倍数为y。解题思路:枚举法即可。枚举的对象:枚举p,且p必须是x的倍数,还有p<=yq的计算:q=x*y/p,q要存在,必须x*y%p==0,且gcd(p,q)==x100分代码:#include......