使用装饰器验证用户登陆,需要使用@method_decorator

首先需引用,method_decorator,并定义一个闭包

from django.utils.decorators import method_decorator
def checkLogin(func):
def wrapper(request,*args,**kwargs):
is_login=request.session.get('IS_LOGIN',False)
if is_login:
return func(request,*args,**kwargs)
else:
return redirect('/Index/')
return wrapper

登陆页面的定义如下例子:

class Login(View):
def get(self,request):
return render(request,'index.html')
def post(self,request):
username=request.POST.get('username')
user_list=Hbuser.objects.filter(username=username).first()
if user_list:
request.session['IS_LOGIN']=True
request.session['uname']=user_list.username
else:
request.session.flush()
return redirect('/Index/')
return redirect('/Home/')

装饰器的使用方法如下,下面是对整个类实用装饰器

@method_decorator(checkLogin,name='dispatch')
class Home(View):
def get(self,request):
return HttpResponse('OK')

最新文章

  1. WindowManager.LayoutParams 札记
  2. ThinkPHP真正疑难问题笔记
  3. oracle union 注入工具
  4. 解决qt5在ubuntu下无法调用fcitx输入中文的问题
  5. Android SQLite数据储存方式
  6. PHP入门基础(一)——标记风格、注释、表单获取、字符串类型、变量解析
  7. 二十一、Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  8. 源代码Log
  9. WebBrowser控件使用详解
  10. 笔记整理——Linux下C语言正则表达式
  11. 微软跨平台ORM框架之EFCore — 约定与属性映射
  12. mysql与linux ~ 磁盘分析与调优
  13. 13.14.15.16.17&《一个程序猿的生命周期》读后感
  14. H5新特性之canvas
  15. 在deepin中安装docker
  16. 嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结
  17. tomcat端口设置
  18. SpringBoot Laravel(artisan serve) MIXPHP简单性能测试
  19. SQL Server客户端工具到底使用的是哪个provider呢?
  20. 结构体内的函数与bfs的情景变量

热门文章

  1. git flow版本
  2. maven打jar包,导入本地jar
  3. chcon命令详解
  4. axios 请求数据跳转页面报'$router' of undefined问题
  5. Hibernate框架基本使用
  6. C程序设计学习笔记(完结)
  7. HbaseWAL
  8. Dockerfile 实践及梳理
  9. Python3-sqlalchemy-orm 分组统计
  10. TCP连接中的状态