Django2.0-views(9)-类视图添加装饰器
2018-11-12 16:47
330 查看
版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc666666_6/article/details/83994388
给类添加装饰器,那么可以通过以下两种方式来实现:
给类视图添加装饰器
不管是
get请求还是
post请求,都会走
dispatch(request,*args,**kwargs)方法,所以如果实现这个方法,将能够对所有请求都处理到。
给类添加装饰器,那么可以通过以下两种方式来实现:
装饰dispatch方法
from django.utils.decorators import method_decorator # 给类的方法使用的装饰器 def login_required(func): # 装饰器 def wrapper(request,*args,**kwargs): if request.GET.get("username"): return func(request,*args,**kwargs) else: return redirect(reverse('index')) return wrapper class IndexView(View): def get(self,request,*args,**kwargs): return HttpResponse("index") @method_decorator(login_required) # 使用装饰器 def dispatch(self, request, *args, **kwargs): super(IndexView, self).dispatch(request,*args,**kwargs)
直接装饰在整个类上
只用一个装饰器
@method_decorator(装饰器函数名,name='需要装饰的函数名')
使用多个装饰器
@method_decorator([装饰器名1,装饰器名2,...],name='需要装饰的函数名')
from django.utils.decorators import method_decorator def login_required(func): # 装饰器 def wrapper(request,*args,**kwargs): if request.GET.get("username"): return func(request,*args,**kwargs) else: return redirect(reverse('login')) return wrapper @method_decorator(login_required,name='dispatch') # 选定需要装饰的函数名 class IndexView(View): def get(self,request,*args,**kwargs): return HttpResponse("index") #def dispatch(self, request, *args, **kwargs): # super(IndexView, self).dispatch(request,*args,**kwargs)阅读更多
相关文章推荐
- Django基于类的视图(views)
- django使用通用视图 django.views.generic
- Django学习8:视图(views)
- Django中,模型(models),视图(views)和模板的区别和应用
- Django框架全面讲解 -- Django Views(视图函数)
- django views视图函数返回值 return redirect httpresponse总结
- Django 视图系统(views)
- Django Class-based generic views 基于类的通用视图
- Django 类视图 添加装饰器
- Django views视图请求对象HttpRequest
- django2.0 url,views,templates
- django 1.8 官方文档翻译: 3-1-4 视图装饰器
- Django框架MTV架构之 Views(视图)
- Django - - - -视图层之视图函数(views)
- 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
- Django2.0-views(10)-错误处理
- Django框架,Views(视图函数)
- django 2.0 添加外键后,迁移数据库的提示缺少参数on_delete问题
- Django下配置urls(路由)以及views(视图)
- django-视图CBV模式、CBV结合装饰器、csrf