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功能使用到那个访问页面上面进行设置