欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django 传中文cookie + jQuery 获取中文cookie

程序员文章站 2022-07-13 13:11:12
...

Django + Jquery 操作cookie + 中文、字符转义cookie问题


       最近在做Web socket时用到cookie, 在前后端传中文和符号时会被转义,几经周转, 总算解决了, 在这里简要分享以下其操作和方法。


       Cookie机制: 存放少量数据在客户端比如浏览器中,用户认证需用session

环境
	Django 2.*
	pycharm 2019.2 (prefessional)
语言
	python 3.7
	Javascript + Jquery


一、Django操作cookie

读取cookie
序号 代码 示例 概要
1 request.COOKIES.get(key) . . . 根据Key值获取value值
如果加密的话那就是加密的value
2 request.COOKIES . . . 读所有的cookie
删除cookie
序号 操作 示例 概要
1 response = HttpResponse()
response.delete_cookie(key)
. . . 删除键为key的cookie
必须是HttpResponse的返回对象
才能操作
设置cookie
序号 操作 示例 概要
1 response = HttpResponse()
response.set_cookie(key, value)
. . . 设置(增加)cookie,
key:cookie键;
value:cookie值(
需要转为字符串)


必须是HttpResponse的返回对象
才能操作
关于其他参数:

set_cookie (key, value=" ", max_age=None, expires=None, path=’/’, domain=None, secure=None, httponly=False)

  1. key: cookie的name
  2. value:cookie的值
  3. max_age:cookie存活时间,单位是秒
  4. expires:具体过期时间
  5. path:cookie的访问路径,只有在某个路径下访问
  6. domain:域名,只有在某个域名下访问
  7. secure:安全
  8. httpoly:如果为True那么js就不能获取cookie

set_signed_cookie(key, value, salt=’’, max_age=None, expires=None, path=’/’, domain=None, secure=None, httponly=True)
  1. salt: 秘钥, 设置加密的cookie
说明

   上述所说的HttpResponse返回对象,并不一定必须是HttpResponse的返回对象。这里有歧义,其实也可以是 render()、 redirect() 的返回对象,原因是两者在内部继承的还是与HttpResponse相应的类,返回的也是一个HttpResponse对象。

** 设置中文 cookie **

   1. 在Django中设置中文:
	# 回写cookie  # cookie中设置中文  # 以下操作 应在视图函数中
def viewsFunk(request, *args)
    from django.utils.http import urlquote  # 导入
    HttpRespnse_obj = HttpResponse()   # 或者 render()  或者 redirect()
    HttpRespnse_obj.set_cookie("userInfo",urlquote(str(userInfo)))
    return HttpRespnse_obj

   2. 在Html的jQuery中取值:

decodeURIComponent(document.cookie)  // 将取出包含中文的字符串,而不是被转义的字符串


二、jQuery操作cookie

由于原生的JS操作繁琐,建议使用jQuery进行操作(jQuery.js 和 cookie.js)

获取cookie
序号 操作 示例 概要
1 document.cookie . . . 由DOM获取cookie
2 $.cookie('value') . . . 用jQuery从cookie中取值
删除cookie
序号 操作 示例 概要
1 $.removeCookie('value') . . . 由jQuery删除cookie中的值
设置cookie
序号 操作 示例 概要
1 $.cookie('val1', 'val2', { key: value, }) . . . 由jQuery设置cookie值
前端cookie的 编码 与 解码
通过encodeURIComponent(URIstring)URL进行编码

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码



参考博客:
_______________________________________________________

  1. 使用Django设置Cookie:
  2. Django下进行urlencode编码,可以编码中文参数的代码