Django开发中怎么给类视图添加装饰器
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"Django开发中怎么给类视图添加装饰器"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年12月02日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_loginclass myinfor(generic.ListView):pass
报错信息:
AttributeError: 'function' object has no attribute 'as_view'
正确用法
实现方式一:
from django.utils.decorators import method_decoratordef 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_cacheurlpatterns += [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 wrapperdef is_admin(func):# 检测是否为admin管理员。教程源站(bigyoung.cn)def wrapper(request,*args,**kwargs):passreturn wrapper
"Django开发中怎么给类视图添加装饰器"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
视图
方式
检测
开发
教程
用户
页面
登录
内容
多个
更多
知识
错误
实用
学有所成
接下来
信息
功能
包裹
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无法链接服务器什么意思
微软数据库2010驱动
我的世界时装服务器会被盗取吗
检察机关网络安全预案
租台服务器多少钱
我的世界生化对决是在哪个服务器
互联网服务科技股
服务器bs888是什么
软件开发报价比例
美国软件开发平均年薪
湖南运营软件开发中心
仙剑诀数据库文件破解
服务器租用服务器托管必备常识
南宁互动博物馆软件开发
数据库一致性问题
广西南宁易唐软件开发
奉贤区创新软件开发信息推荐
超星数据库可不可以查找标准文献
互联网科技对智能家居的影响
c语言 通用数据库
小学网络安全自查总结博客
检察机关网络安全预案
第3代数据库系统是什么
崇明区市场软件开发用户体验
在哪里看明日之后的服务器
重庆软件开发职业学校
统一管理服务器集群
软件开发公司的提成制度
雷云3无法找到服务器
网络技术公司怎么交税