Django | Cookie 中文编码的问题
在Django中,向cookie写入中文字符后会报错;如向cookie中保存用户名,当用户名存在中文字符时:
Traceback (most recent call last): File , in run self.finish_response() File , in finish_response self.write(data) File , in write self.send_headers() File , in send_headers self._write(bytes(self.headers)) File , in __bytes__ return str(self).encode('iso-8859-1') UnicodeEncodeError: 'latin-1' codec can't encode characters in position 145-146: ordinal not in range(256) [/Apr/ ::] ---------------------------------------- Exception happened during processing of request ) Traceback (most recent call last): File , in run self.finish_response() File , in finish_response self.write(data) File , in write self.send_headers() File , in send_headers self._write(bytes(self.headers)) File , in __bytes__ return str(self).encode('iso-8859-1') UnicodeEncodeError: 'latin-1' codec can't encode characters in position 145-146: ordinal not in range(256) During handling of the above exception, another exception occurred: Traceback (most recent call last): File , in run self.handle_error() File , in handle_error super(ServerHandler, self).handle_error() File , in handle_error self.finish_response() File , in finish_response self.write(data) File , in write self.send_headers() File , in send_headers if not self.origin_server or self.client_is_modern(): File , in client_is_modern return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9' TypeError: 'NoneType' object is not subscriptable During handling of the above exception, another exception occurred: Traceback (most recent call last): File , in process_request_thread self.finish_request(request, client_address) File , in finish_request self.RequestHandlerClass(request, client_address, self) File , in __init__ super(WSGIRequestHandler, self).__init__(*args, **kwargs) File , in __init__ self.handle() File , in handle handler.run(self.server.get_app()) File , in run self.close() File , in close self.status.split()[], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split'
此时可以使用Json模块的dumps()和loads(),将其序列化,再进行反序列化;
如记录用户名时,先将用户名进行序列化,再写入到cookie中。而在读取cookie之后,再将其反序列化即可
dumps / loads 用法:
import json username='用户1' username=json.dumps(username) username '"\\u7528\\u62371"' # 反序列化 username=json.loads(username) username '用户1'
在Django中:
if remember=='on': # 记住用户名 # 如果username是中文,设置cookies时会报错 # cookie 中文编码处理 username=json.dumps(username) response.set_cookie('username',username,max_age=7*24*3600) else: # 取消记住用户名 response.delete_cookie('username')
if 'username' in request.COOKIES: username=request.COOKIES.get('username') username=json.loads(username)
Django | Cookie 中文编码的问题的更多相关文章
- Django cookie相关操作
Django cookie 的相关操作还是比较简单的 首先是存储cookie #定义设置cookie(储存) def save_cookie(request): #定义回应 response = Ht ...
- falsk 与 django cookie和session存、取、删的区别
falsk cookie的存取删需导入from flask import Flask,make_response,request# 存COOKIE的方法@app.route('/setcookie') ...
- django cookie、session
Cookie.Session简介: Cookie.Session是一种会话跟踪技术,因为http请求都是无协议的,无法记录上一次请求的状态,所以需要cookie来完成会话跟踪,Seesion的底层是由 ...
- Python之路-(Django(Cookie、分页))
Cookie 分页 1.获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, sal ...
- Django Cookie 和 Sessions 应用
在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的 ...
- Python Web框架篇:Django cookie和session
part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而sessio ...
- 28.Django cookie
概述 1.获取cookie request.COOKIES['key'] request.COOKIES.get('key') request.get_signed_cookie(key, defau ...
- 5.Django cookie
概述 1.获取cookie request.COOKIES['key'] request.COOKIES.get('key') request.get_signed_cookie(key, defau ...
- Django Cookie,Session
Cookie Cookie的由来 HTTP协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...
随机推荐
- jar与war包区别,转自https://www.jianshu.com/p/3b5c45e8e5bd
https://www.jianshu.com/p/3b5c45e8e5bd
- 单点登录(SSO)原理与案例
单点登录业务流程 概要 详细流程 单点登录系统一共有三个模块,1.服务端 2.客户端 3.代理模块端 用户发送访问客户端的请求,被客户端的代理模块的拦截器拦截,判断cookie中是否含有token(令 ...
- href=#与href=javascript:void(0)的区别
#"包含了一个位置信息,默认的锚点是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首,而 ...
- php memcache 基础操作
<?php/** * Memcache缓存操作 * @author hxm * @version 1.0 * @since 2015.05.04 */class MCache extends O ...
- clickhouse安装使用文档
Clickhouse简介 Clickhouse是什么 1. 开源的列存储数据库管理系统 2. 支持线性扩展 3. 简单方便 4. 高可靠性 5. 容错(支持多主机异步复制,可以跨多个数据中心部署. 单 ...
- pyinstaller打包程序 带图片
首选说一下,这种打包方式只能在本电脑上使用运行正常 准备:.py文件:你的程序 gif文件:你要用的图片 第一步: 在上面文件所在目录打开cmd 输入 pyi-makespec FP.py 会生成一个 ...
- Python自动化开发 - MySQL(一)
本节内容 一.概述 二.下载安装 三.数据库操作 四.数据表操作 五.表内容操作 一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么 ...
- Django Class Based View
本节内容 一 Class Based View 基于类的视图 1. 类的视图 View 2. 类的视图 TemplateView 3. 类的视图 login_required解决方法 二 ...
- 微信公众号UX分析—— 学生作业小结
1. 不足: 1. 权威性:个人帐号,显得不够正式. 2. 排版问题: + 没有必要的外接端口,界面设计极度缺少排版.哪怕是个人公众号都不至于如此,更何况这是一个学校的教务平台. 3. 反应不及时或无 ...
- MVC 5使用TempData Object跨视图传递数据
经过一系列显示数据的练习:<MVC 5使用ViewData(对象)显示数据>http://www.cnblogs.com/insus/p/3377178.html<MVC 5使用Vi ...