Django 之装饰器实现登录认证
Posted midworld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 之装饰器实现登录认证相关的知识,希望对你有一定的参考价值。
def check_login(func): # 自定义登录验证装饰器
def warpper(request, *args, **kwargs):
is_login = request.session.get('is_login', False)
if is_login:
func(request, *args, **kwargs)
else:
return redirect("/login")
return warpper
def login_user(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
all_data = form.clean() #获取post数据,例如 'username': u'yang1', 'password': 111
exist = User.objects.filter(username = all_data['Form_username'],password = all_data['Form_password']).first()
if exist:
request.session['is_login'] = True #设置session的随机字段值
request.session['username'] = exist.username #设置uname字段为登录用户
return redirect('/home')
else:
return HttpResponse("账户或密码错误")
else:
form = LoginForm()
return render(request, 'login.html', 'form': form)
@Check_Login
def home(request):
username = request.session.get('uname', False) #获取登录用户名
return render(request, home.html', 'username': username) #用户名渲染到前端页面
以上是关于Django 之装饰器实现登录认证的主要内容,如果未能解决你的问题,请参考以下文章
django的权限认证:登录和退出。auth模块和@login_required装饰器
django的auth认证,is_authenticate 和装饰器的2个方法,注销的功能,