Django开发中怎么给类视图添加装饰器
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"Django开发中怎么给类视图添加装饰器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年01月24日Django开发中怎么给类视图添加装饰器
本篇内容介绍了"Django开发中怎么给类视图添加装饰器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
场景:
Django 开发中,如果我们使用了类视图,如:ListView、DetailView、UpdateView
等,这时我们又想要对这个视图添加一个装饰器,来实现某种功能,这时候该怎么处理呢?
环境:
python 3.6
Django 1.11
错误用法
错误实现方式:
def is_login(func):
def wrapper(request,*args,**kwargs):
# 若检测不到用户就跳转登录页面
if not request.session.get("user"):
return redirect(reverse('login'))
return func(request,*args, **kwargs)
return wrapper
@is_login
class myinfor(generic.ListView):
pass
报错信息:
AttributeError: 'function' object has no attribute 'as_view'
正确用法
实现方式一:
from django.utils.decorators import method_decorator
def is_login(func):
def wrapper(request,*args,**kwargs):
# 若检测不到用户就跳转登录页面
if not request.session.get("user"):
return redirect(reverse('login'))
return func(request,*args, **kwargs)
return wrapper
# 使用method_decorator将装饰器包裹起来,同时,name参数是必须的,dispatch支持所有请求类型,包含get、post等,如果指定某种请求方式改为:name='get'. 教程源站(bigyoung.cn)
@method_decorator(is_login, name='dispatch')
class myinfor(generic.ListView):
pass
实现方式二:
通过路由配置实现:(不推荐)
'''教程源站:BigYoung.cn'''
from django.utils.decorators import never_cache
urlpatterns += [
path('myinfo/', never_cache(myinfor.as_view()), name='myinfo'),
]
进阶用法:
如果你有多个装饰器需要装饰,如下多个装饰器:
def is_login(func):
def wrapper(request,*args,**kwargs):
# 若检测不到用户就跳转登录页面
if not request.session.get("user"):
return redirect(reverse('login'))
return func(request,*args, **kwargs)
return wrapper
def is_admin(func):
# 检测是否为admin管理员。教程源站(bigyoung.cn)
def wrapper(request,*args,**kwargs):
pass
return wrapper
"Django开发中怎么给类视图添加装饰器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
视图
方式
检测
开发
教程
用户
页面
登录
内容
多个
更多
知识
错误
实用
学有所成
接下来
信息
功能
包裹
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华为服务器cpu开发
魔兽 数据库 tbc
全球互联网科技公司市值
自主可控软件开发报价表
网络技术在小学教育中的应用
新的cc防护服务器
软件开发日语的翻译
手机应用软件开发的研究意义
那些赌博软件开发
如何删除用友的数据库
湖北升腾服务器价钱
大数据中的关系型数据库
天津市网络安全会议
计算机网络安全软件龙头股
南京运营软件开发代理品牌
图书馆网络安全心得体会
MPP数据库 行式 列式
编程软件开发过程
一般银行都有哪些数据库
个人热点的网络安全吗
django 数据库更新
数据库locate函数用法
rpc服务器自己修复
西安服务器回收电话多少
汽车屏显示服务器错误
网络技术面试
通保二级通信网络安全防护报价
如何看荧石云服务器
一般银行都有哪些数据库
软件开发研发费用怎么做账