首页 > 其他分享 >【14.0】Django框架之CBV添加装饰器的三种方式

【14.0】Django框架之CBV添加装饰器的三种方式

时间:2023-07-17 17:47:09浏览次数:51  
标签:14.0 get self method CBV import Django 装饰 decorator

【一】给类方法加装饰器

指名道姓的装 -- 放在方法上面

  • 路由
path('login_view/', views.MyLogin.as_view()),
  • 需要导入一个模块
from django.utils.decorators import method_decorator
  • 视图
from django.views import View
from django.utils.decorators import method_decorator

'''
CBV中Django不建议你直接给类方法加装饰器
无论该装饰器能否正常工作,都不建议加
'''

class MyLogin(View):
    @method_decorator(login_auth)
    def get(self, request):
        return HttpResponse("get 请求")

    @method_decorator(login_auth)
    def post(self, request):
        return HttpResponse("post 请求")

【二】放在类上面

放在类的上面加装饰器

在参数内指向需要装饰的函数

可以指向多个类方法 -- 针对不同的类方法指定不同的装饰器

from django.views import View
from django.utils.decorators import method_decorator

'''
CBV中Django不建议你直接给类方法加装饰器
无论该装饰器能否正常工作,都不建议加
'''
@method_decorator(login_auth,name='get')
@method_decorator(login_auth,name='post')
class MyLogin(View):

    def get(self, request):
        return HttpResponse("get 请求")


    def post(self, request):
        return HttpResponse("post 请求")

【三】重写dispatch方法

在类中自定义 dispatch 方法

这种方法会给类中所有的方法都加上装饰器

from django.views import View
from django.utils.decorators import method_decorator

'''
CBV中Django不建议你直接给类方法加装饰器
无论该装饰器能否正常工作,都不建议加
'''
class MyLogin(View):
    @method_decorator(login_auth)
    def dispatch(self, request, *args, **kwargs):
        pass

    def get(self, request):
        return HttpResponse("get 请求")


    def post(self, request):
        return HttpResponse("post 请求")

标签:14.0,get,self,method,CBV,import,Django,装饰,decorator
From: https://www.cnblogs.com/dream-ze/p/17560741.html

相关文章

  • 【13.0】Django框架之Cookie和Session
    【一】Cookie与Session的发展史详解Cookie和Session是用来在Web应用程序中跟踪用户会话数据的两种常用技术。【1】Cookie的发展史:1994年,网景通信公司推出了第一个浏览器Cookie技术。Cookie是存储在用户计算机上的小型文本文件,用于跟踪用户在网站上的活动。初始版本的Cookie只......
  • django项目中分多个models.py创建table
    django项目每个app都默认有一个model.py文件。当app需要大量建立table,且需要分类时,能否建立多个model.py文件?。1、在app文件夹下创建一个models文件夹(myapp/models/):2、将app文件夹中models.py文件删除(也可以剪切到models文件夹中):3、models文件夹下新建__init__.py:4、......
  • 【6.0】Django框架之路由层
    【一】路由匹配#路由匹配path('test',views.test),path('testadd',views.testadd),无法跳转到testaddurl方法第一个参数是正则表达式只要第一个参数正则表达式能够匹配到内容,就会立刻停止匹配,执行视图函数#路由匹配path('test/',views.test),path('testadd......
  • 【9.0】Django框架之模型层
    【一】前言Django自带的sqlite3数据对日期格式不敏感,处理的时候容易出错【1】测试脚本测试脚本当我们只想要测试Django中的某一个py文件的内容时,我们可以不需要书写前后端交互的形式,而是直接写一个测试脚本即可测试环境的准备在测试文件中书写下面内容这内容其......
  • 【8.0】Django框架之模板层
    【一】模板语法的传值{{}}:变量相关{%%}:逻辑相关【1】数据准备路由#模板语法传值url(r'^index/',views.index),【2】基本数据类型(1)视图defindex(request):#模板语法可以传递的后端Python数据类型#整型a=123#浮点型b=11.11......
  • 【补充】Django自带的序列化组件
    【11.0补充】Django自带的序列化组件【一】准备数据fromdjango.dbimportmodels#Createyourmodelshere.classUser(models.Model):username=models.CharField(max_length=32,verbose_name="姓名")age=models.IntegerField(verbose_name="年龄")g......
  • 【二十三】Django框架(Rest Framework)之版本控制
    【一】为什么需要版本控制API版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据)。DRF提供了许多不同的版本控制方案。可能会有一些客户端因为某些原因不再维护了但是我们后端的接口还要不断的更新迭代这个时候通过版本控制返回不同的内容......
  • 【补充】Django缓存与内置信号
    【一】缓存的介绍【1】什么是缓存简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中当用户再次请求时,直接去缓存中拿,避免对数据库的频繁操作,加快数据的显示时间需要知道的是,缓存里面的数据一般都设置有超时时间,缓存一般用在数据变化不大,实时率不高的......
  • Django框架学习
    Django框架开发项目的创建1、在终端创建项目打开终端进入某个目录(项目位置)"C:\ProgramFiles\Python37\Scripts\django-admin.exe"startproject项目名称2、在pycharm创建项目3、默认项目的文件介绍app终端创建apppythonmanage.pystartappapp01默认......
  • 鸟类识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型
    一、介绍鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频and代码视频+......