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")
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步