Django框架cookie使用方法
1、首先编写登录login.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
<script type="text/javascript" src="/static/js/jquery-3.4.1.js"></script>
<script type="text/javascript" src="/static/login/login.js"></script>
<style>
#login-btn{
outline: none;
border: none;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-3 col-lg-offset-3">
<div>
<form>
{% csrf_token %}
<div class="form-group">
用户名<input type="text" id="user" class="form-control">
</div>
<div class="form-group">
密码<input type="password" id="pwd" class="form-control">
</div>
<input type="button" value="登录" id="login-btn" class="btn btn-success pull-right">
<p class="error"></p>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
2、登录成功后跳转页面index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h3>上次访问时间:{{ last_visit_time }}</h3>
<h2>Hi! {{ username }}</h2>
</body>
</html>
3、编写jquery ;ajax发送登录认证页面
$(function () {
$('#login-btn').click(function () {
$.ajax({
url: '',
type: 'post',
data:{
user: $('#user').val(),
pwd: $('#pwd').val(),
csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val()
},
success:function (data) {
if (data.user){
location.href='/index/'
}else{
$('.error').text(data.msg).css({
color: 'red',
})
}
}
})
});
});
4、Django框架下的cookie代码编写,和相关参数说明
from django.shortcuts import render, redirect, HttpResponse
from django.http import JsonResponse
def login(request):
if request.method == "POST":
user = request.POST.get('user')
pwd = request.POST.get('pwd')
status = UserInfo.objects.filter(user=user, pwd=pwd).first() #注:这里验证用户名,密码输入是否正确
msg = {"user": None, 'msg': None}
if status:
msg['user'] = status.user
response = JsonResponse(msg)
"""
设置set_cookie("主键key", value添加值, max_age=失效时间时间以秒计算): 设置主键key:is_login, value:True
max_age=15,作为某个页面判断登录成功为设置的值(value)为True,才能访问页面,否则跳转到登录页面进行登录才
访问,max_age=15代表15秒以后刷或者跳转需要重新登录
"""
# response.set_cookie("is_login", True) #注:这里设置的是没有时间失效cookie设置。
# 设置cookie超时连接,超时后跳转到指定的登录页面重新登录, max_age参数不添加表示超时不会计算
response.set_cookie("is_login", True, max_age=15)
# 设置cookie获取用户名称
response.set_cookie('username', status.user)
return response
else:
msg['msg'] = '账户或密码输入错误'
return JsonResponse(msg)
return render(request, 'login.html')
def index(request):
import datetime
"""
is_login获取设置set_cookie信息,判断为True跳转到index.html页面,如果False跳转到
登录页面
username:index.html显示用户名称变量
request.COOKIES:是字典类型
:param request:
:return:
"""
# 利用request.COOKIES.get("set_cookie主键key")获取设置set_cookie信息
is_login = request.COOKIES.get('is_login')
if is_login:
username = request.COOKIES.get('username')
# 获取上次访问时间
last_visit_time = request.COOKIES.get('last_visit_time', '')
# 保存现在登录时间
now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
response = render(request, "index.html", locals())
response.set_cookie('last_visit_time', now_time)
return response
else:
return redirect('/login/')
5、cookie相关参数说明,注意事项
def set_cookie(self,
key, 键
value='', 值
max_age=None, 超长时间cookie需要延续的时间(以秒为单位),
如果参数为None,cookie会延续到浏览器结束
expires=None, 超长时间,expires默认None, cookie失效的实际日期/时间
path='/', Cookie生效的路径,游览器只会把cookie回传给带有该路劲
的页面,这样可以避免将cookie传给站点中的其它的应用
/ 表示根路径,特殊的根路径cookie可以被任何url页面访问
domain=None, Cookie生效的域名
secure=False, 如果设置为True, 游览器将通过https来回传cookie
httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对
底层抓包可以获取到也可以被覆盖)
):
设置cookie:
响应体:
return HttpResponse()
return render()
return redirect()
注:上面三个响应体都有set_cookie方法
对响应体设置变量,这里对 HttpResponse()
response = HttpResponse("OK")
设置cookie需要使用到set_cookie('key', '值')
response.set_cookie('is_login', True)
注:cookie设置使用需要用户登录判断代码上面设置,再把cookie功能使用到那个访问页面上面进行设置

浙公网安备 33010602011771号