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

  

 

posted @ 2022-03-08 14:37  点点滴滴的努力  阅读(237)  评论(0)    收藏  举报