Django | 操作cookie

获取Cookie

request.COOKIES['key']

request.COOKIES.get['key']

request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)(签名cookie,在设置时进行了签名加密)

"""
参数:

default: 默认值

salt: 加密盐

max_age: 后台控制过期时间
"""

设置Cookie

rep = HttpResponse(...)

rep = render(request, ...)

rep = redirect( ...)

rep.set_cookie(key,value,...)

rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)(签名cookie)

return rep

"""
参数:

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获取(不是绝对,底层抓包可以获取到也可以被覆盖)
"""

删除Cookie

def logout(request):

    rep = redirect("/login/")

    rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值

    return rep

cookie设置参数

class HttpResponseBase:

    def set_cookie(
            self,

            key,  # 键

            value='',  # 值

            max_age=None,  # 超长时间, 有效事件   
            # max_age = 20, 意思是这个cookie20秒后就消失了,默认时长是2周, 这个是以秒为单位的
            # cookie需要延续的时间(以秒为单位) 如果参数是\ None `` ,这个cookie会延续到浏览器关闭为止。

            expires=None,  # 超长时间,值是一个datetime类型的时间日期对象,到这个日期就失效的意思,用的不多
            # expires默认None, cookie失效的实际日期 / 时间。

            path='/',  # Cookie生效的路径,就是访问哪个路径可以得到cookie,'/'是所有路径都能获得cookie
            # 浏览器只会把cookie回传给带有该路径的页面,这样可以避免将cookie传给站点中的其他的应用。
            # / 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问

            domain=None,  # Cookie生效的域名你可用这个参数来构造一个跨站cookie。如, domain = ".example.com"
            # 所构造的cookie对下面这些站点都是可读的:www.example.com 、 www2.example.com和.other.sub.domain.example.com 。
            # 如果该参数设置为None ,cookie只能由设置它的站点读取。

            secure=False,  # 如果设置为True ,浏览器将通过HTTPS来回传cookie。

            httponly=False,  # 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

    ):
        pass
posted @ 2022-03-05 15:59  槑孒  阅读(23)  评论(0编辑  收藏  举报