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

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

时间:2024-04-07 18:36:28浏览次数:18  
标签:get self method 22.0 CBV import Django 装饰 decorator

【一】引言

  • 给类视图函数添加装饰器需要借助第三方模块
from django.utils.decorators import method_decorator

【二】三种添加装饰器方式

【1】给类方法加装饰器

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

(1)路由

path('login_view/', views.MyLogin.as_view()),

(2)视图

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 请求")

【2】放在类上面

放在类的上面加装饰器

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

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

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 请求")

【3】重写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 请求")

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

相关文章

  • 【21.1】Django框架之会话Session补充
    【一】前言引入【1】HTTP特性之无状态因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的、独立的。通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户。对于静态网站,这可能不是个问题,而对于动态网站,尤其......
  • 【21.0】Django框架之Cookie和Session
    【一】Cookie与Session的发展史Cookie和Session是用来在Web应用程序中跟踪用户会话数据的两种常用技术。【1】Cookie的发展史1994年,网景通信公司推出了第一个浏览器Cookie技术。Cookie是存储在用户计算机上的小型文本文件,用于跟踪用户在网站上的活动。初始版本的Cookie只......
  • 【24.0】Django框架之csrf跨站请求
    【一】跨站请求伪造介绍【1】引入CSRF(Cross-SiteRequestForgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而达到攻击的目的。【2】举......
  • 【23.0】Django框架之中间件引入
    【一】Django中间件介绍【1】什么是Django中间件Django中间件是一个轻量级、可重用的组件,用于处理Django请求和响应的过程。它提供了对请求和响应进行全局处理的机制,可以在请求达到视图之前进行预处理或在响应返回给客户端之前进行后处理。中间件是按照顺序依次执行的,每......
  • 【26.1】Django框架之settings配置
    【一】引言Django项目的设置文件位于项目同名目录下,名叫settings.py。这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证。【二】简述settings.py文件本质上是一个Python模块,带有模块级别的变量。下面是一些示例设置:ALLOWED_HOSTS=['www.examp......
  • 【26.0】Django框架之settings源码
    【一】Django配置文件介绍Django框架默认提供给我们一个配置文件在我们项目根目录下的setting.py文件中,在里面我们可以看到很多的配置项并且我们能够自主的添加相应的配置但是其实这个文件只是Django暴露出来给我们的一个接口文件,在Django内部还存在一个更加强大的配置文件......
  • 【25.0】Django框架之auth模块
    【一】Auth模块引入我们在创建一个Django项目之后,直接执行数据库迁移命令会自动生成很多表django_sessionauth_userDjango在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是auth_user表,并且必须是管理员用户才能进入【二】创建超级用户(管理员)......
  • python计算机毕设【附源码】汉服文化管理系统(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:汉服,作为中国古代汉族传统服饰的总称,承载了丰富的历史文化遗产和审美价值。近年来,随着国民文化自信心的提升和传统文化复兴的浪潮,汉服文化逐渐走进了公众的......
  • 【26.2】Django框架之settings核心配置项
    【一】前言【1】引言Django的默认配置文件中,包含上百条配置项目其中很多是我们‘一辈子’都不碰到或者不需要单独配置的这些项目在需要的时候再去查手册。【2】强调配置的默认值不是在settings.py文件中!不要以为settings.py中的配置值就是默认值,参考前文。settings.py......
  • Django单程序运行
    1、增加环境变量并且配置#确保运行在最model类之前importosimportdjangoos.environ.setdefault('DJANGO_SETTINGS_MODULE','SmsProject.settings')django.setup()2、如果使用Pycharm还需要做如下配置3、运行程序importosimportdjangoos.environ.setdefault(......