135.在django中操作cookie

操作cookie

设置cookie

设置cookie是设置值给浏览器的,因此我们可以通过response的对象来设置,可以通过HttpResponse的对象或者是HttpResponseBase的子类对象来设置,设置cookie可以通过response.set_cookie来设置,这个方法的相关参数如下:

(1)key:这个cookie的key。
(2)value:这个cookie的value。
(3)max_age:最长的生命期。单位是秒。
    # 2. 设置过期时间为两分钟过后
    response.set_cookie('username', 'guyan', max_age=120)
(4)expires:过期时间。跟max_age是类似的,只不过这个参数需要传递一个具体的日期,比如datetime或者是符合日期格式的字符串,如果同时设置了expires和max_age,那么符合使用expires的值作为过期时间。
from datetime import datetime
from django.utils.timezone import make_aware

    # 3. 设置过期时间expires,datetime类型或日期格式的字符串
    # date = datetime(year=2020,month=2, day=20, hour=0, minute=0, second=0)
    # 此时在浏览器中获取的时间为navie时间,可以使用make_aware转变为本时区的时间
    date = make_aware(datetime(year=2020,month=2, day=20, hour=0, minute=0, second=0))
(5)path: 对域名下哪个路径有效。默认是针对域名下的所有路径都有效。
response.set_cookie('password', 'guyan', max_age=120, path='cms/')
(6)domain: 对哪个域名有效,默认情况下针对主域名下都有效,如果只要针对某个子域名才有效,那么可以设置这个属性。
(7)secure:是否是安全的,如果设置为True,那么只能在https协议下才能使用。
 response.set_cookie('password', 'guyan', max_age=120, path='cms/', secure=True)
(8)httponly:默认是False,如果为True,那么在客户端不能通过Javascript进行操作。

删除cookie

通过delete_cookie即可删除cookie,实际上删除cookie就是将指定的cookie的值设置为空的字符串,然后使用将他的过期时间设置为0,也就是浏览器关闭之后就过期。

def delete_cookie(request):
    response = HttpResponse('delete cookie view')
    depwd = response.delete_cookie('password')
    print(depwd)   
    <!--打印出的结果为None-->
    return response
在浏览器中查看cookie信息,可以看到名称为password的内容为空的字符串,并且创建时间和到期时间是相同的,也就是立即过期,这样就达到了删除cookie的效果。

获取cookie

获取cookie可以通过request.COOKIES来获取,示例代码如下:
def my_list(request):
    cookies = request.COOKIES
    cookie = cookies.get('username')
    print(cookie)
    return HttpResponse('mylist')

猜你喜欢

转载自www.cnblogs.com/guyan-2020/p/12354654.html