使用Django设置Cookie

Cookie机制:将少量数据存放在客户端比如浏览器中
Django写cookie:
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)
key: cookie的name
value:cookie的值
max_age:cookie存活时间,单位是秒
expires:具体过期时间
path:cookie的访问路径,只有在某个路径下访问
domain:域名,只有在某个域名下访问
secure:安全
httpoly:如果为True那么js就不能获取cookie

set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)设置加密的cookie,salt是秘钥

# 设置
def set_cookie(request):
t = request.GET.get('type')
print(type(t))
t = int(t)
template = loader.get_template("test_cookie.html")
response = HttpResponse(template.render())
if t == 1: # 设置key-valuecookie
response.set_cookie("test_cookie", "Hello World, 上海sxt".encode(encoding="utf-8"))
elif t == 2: # 设置过期时间
response.set_cookie("cookie_max_age", 123, max_age=10)
elif t== 3: #设置expires,会让max_age无效
import datetime
response.set_cookie("cookie_expires", 234, max_age=10000, expires=datetime.datetime(2020, 12, 1))
elif t == 4: # 设置path,只能在设置的路劲下访问,不同路径下key相同也是两个cookie, path默认/是根路径都可以访问
response.set_cookie("cookie_path1", 1234, path="/polls/redirectTest2/")
elif t == 5: # 设置域名,只能在当前域名下访问,如果是顶级域名,那么子域名下都能访问
response.set_cookie("cookie_domain", 3455, domain="www.shsxt.com")
elif t == 6: # 设置安全secure,只能在https中进行测试
response.set_cookie("cookie_secure", 333, secure=True)
elif t == 7: # 设置httponly,不能用js操作cookie
response.set_cookie("cookie_httponly", 3443, httponly=True)
return response

写入cookie时,如果出现中文,而且浏览器客户端需要读取,那么需要将中文的value进行转码,使用的是urllib下的parse下的quote函数进行转码,然后浏览器js听过decodeURIComponent()进行转码即可


读取Cookie:
1、使用request.COOKIES.get(key) #根据Key值获取value值,如果加密的话那就是加密的value
2、如果是加密的cookie使用request.get_signed_cookie(key)的value
#读所有的cookie
def read_cookie(request):
cookies = request.COOKIES
key = request.GET.get('key')
ty = request.GET.get('type')
if not ty:
for k, v in cookies.items():
print("cookie的key值:%s, value值:%s" % (k, v))
return render(request, "cookie_read.html", {'cookies': cookies})
else:
return HttpResponse("获取到的cookie值:%s" % cookies.get(key))


#读取某个cookie
def read_some_cookie(request):
key = request.GET.get('key')
salt = request.GET.get('salt', '')
value = request.get_signed_cookie(key, salt=salt)
return HttpResponse("获取到的cookie值:%s" % value)


删除Cookie:
def delete_cookie(request):
key = request.GET.get('key')
response = HttpResponse("删除%s的cookie" % key)
response.delete_cookie(key)
return response

调用response里面的delete_cookie(key)删除cookie,实际上就是将此cookie设为过期

 

js操作Cookie
1、手动编写方法,利用document.cookie

2、使用jQuery插件


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Js Cookie操作</title>
</head>
<body>
<button οnclick="setCookie('test11', 'test', 1)">设置cookie</button>
<button οnclick="alert(getCookie('test11'))">获取cookie</button>
<button οnclick="deleteCookie('test11')">删除cookie</button>

<button id="setCookieBtn">jQuery设置cookie</button>
<button id="getCookieBtn">jQuery获取cookie</button>
<button id="delCookieBtn">删除cookie</button>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

<script>
// 设置cookie
function setCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + encodeURIComponent(value) +
((expiredays == null) ? "" : ";expires=" + exdate.toUTCString())
+ ";path=/"
}

// 获取cookie
function getCookie(c_name) {
if (document.cookie.length < 0) {
return "";
}
c_start = document.cookie.indexOf(c_name + "=")
if (c_start < 0) {
return "";
}

c_start = c_start + c_name.length + 1
c_end = document.cookie.indexOf(";", c_start)
if (c_end == -1) {
c_end = document.cookie.length
}
return decodeURIComponent(document.cookie.substring(c_start, c_end))
}

// 删除cookie
function deleteCookie(c_name){
setCookie(c_name, "", -1);
}

$(document).ready(function(){
// 设置cookie
$("#setCookieBtn").click(function(){
$.cookie('login', 'John', { expires: 7, path: '/' })
})

// 获取Cookie
$("#getCookieBtn").click(function(){
val = $.cookie('login')
alert(val)
})

// 删除Cookie
$("#delCookieBtn").click(function(){
$.removeCookie('login')
})
})

</script>

</body>
</html>

转载于:https://www.cnblogs.com/Minlwen/p/10488649.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值