zoukankan      html  css  js  c++  java
  • Django Cookie

    介绍

    为什么会有cookie?

    Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。

    一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。

    怎么生成的?

    一般由服务端指定,客户端也可指定。客户端(浏览器)接收并存放在本地文件下。

    当然客户端也可以不接收,只需要在浏览器设置即可。

    使用

    获取

    request.COOKIES.get("key") # 无加密
    
    request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) # 有加密
    参数:
    #        default: 默认值
    #             salt: 加密盐
    #     max_age: 后台控制过期时间

    设置

    rep = HttpResponse(...) 或 rep = render(request, ...)
     
    rep.set_cookie("key","value",...) # 无加密
    rep.set_signed_cookie("key","value",salt='加密盐',...) # 有加密

    更多参数

    参数:
            key,              键
            value,            值
            max_age=None,     超时时间
            expires=None,     超时时间(IE requires expires, so set it if hasn't been already.)
            path='/',         Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
            domain=None,      Cookie生效的域名
            secure=False,     https传输
            httponly=False    只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

    js设置

    可以通过JQuery.cookie插件进行设置,在使用之前你需要下载插件,导入时需要先导入JQuery

    <script src='/static/js/jquery.cookie.js'></script>
    $.cookie("key", "value",{ path: '/' });

    实例

    简单的设置与获取cookie

    def login(request):
        message = ""
        if request.method == "GET":
            return render(request,"login.html")
        else:
            username = request.POST.get("username")
            password = request.POST.get("password")
            if username == "root" and password == "root":
                response = redirect("/index")
                response.set_cookie("username",username) # 设置cookie
                return response
            else:
                message = "用户名或密码错误!"
                return render(request,"login.html",{"msg":message})
    
    def index(request):
        user = request.COOKIES.get("username") # 读取cookie
        if user:
            return render(request,"index.html",{"user":user})
        else:
            return redirect("/login")
  • 相关阅读:
    2021.07.14牛客学习
    2021.07.13学习总结
    new和malloc区别(自己口头描述)以及delete用法
    排序整理(c++实现),搭配图解
    如何将bilibili上缓存的文件转成MP4
    第07组 团队Git现场编程实战
    第二次结队编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/py-peng/p/12660703.html
Copyright © 2011-2022 走看看