一、
二、
三、基于cookie的登录功能,用户名和密码从数据表中读取!
1、html 简单的登录页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<h1>这里是登录页面</h1>
<br>
<form action="" method="post" enctype="application/x-www-form-urlencoded">
username:<input type="text" name="username">
<br>
<br>
password:<input type="password" name="password">
<br>
<br>
提交:<input type="submit">
</form>
</body>
</html>
2、views 后端处理逻辑
验证登录页面、给主页加上认证装饰器。当cookie过期,访问主页自动跳转到登录页面。
# 登录页面
def login(request):
if request.method == 'POST':
# 从前端获取用户输入的帐号密码
username = request.POST.get('username')
password = request.POST.get('password')
# 读取数据库中的账号密码
user_obj = models.User.objects.filter(name=username, password=password).first()
print(user_obj)
if user_obj:
print('登录成功!')
# 保存用户的信息,使用cookie保存
obj = redirect('/home/')
obj.set_cookie('username', user_obj.name, max_age=10)
return obj
return render(request, 'login.html')
# 登录认证装饰器
def login_auth(func):
def inner(request, *args, **kwargs):
if request.COOKIES.get('username'):
return func(request, *args, **kwargs)
else:
return redirect('/login/')
return inner
# 主页加上登录认证装饰器
@login_auth
def home(request):
'''访问这个home页面,必须登录之后才能范围,否则不让访问?'''
# 判断用户是否登录了?
# 就是判断是否有cookie
# print(request.COOKIES.get('username'))
# if request.COOKIES.get('username'):
# return HttpResponse("登录之后才能看到我哦")
# else:
# return redirect('/login/')
return render(request, 'home.html')
注意⚠️:
1. obj.set_cookie('username', user_obj.name, max_age=10)
max_age=10是设置cookie 10秒过期
2. 查看cookie保存的值
