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协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...
随机推荐
- Java高级
1.GC是什么?为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供 ...
- centos 安装解压工作
解压工具: yum install ark 编辑器: yum install gedit
- php一些简单的作业题
- Zookeeper系列2 原生API 以及核心特性watcher
原生API 增删改查询 public class ZkBaseTest { static final String CONNECT_ADDR = "192.168.0.120"; ...
- TensorFlow数据读取
TensorFlow高效读取数据的方法 TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取 Tensorflow从文件读取数据 极客学院-数据读取 十 ...
- qhfl-3 Course模块
课程模块,包括免费课程以及专题课程两个,主要是课程的展示,点击课程进入课程详细页面 根据功能设计表结构 为了方便,每张表在数据库中添加了中文名 from django.db import models ...
- Day03(黑客成长日记)
#猜数游戏 != 是不等于 # import random # secret = random.randint(,) # gwea = # tries = # : # guess = int(inpu ...
- android启动画面隐藏状态栏全屏显示
1.在根部局给一个id,然后直接设置就行了layout.setSystemUiVisibility(View.INVISIBLE); 状态栏就没有了. 2.如果你只是想改变状态栏颜色的也可以 //5. ...
- Vuejs——(6)Vuejs与form元素
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 资料来于官方文档: http://cn.vuejs.org/guide/forms.html 本 ...
- 6.装配Bean基于注解
1.注解:就是一个类,使用@注解名称 开发中:使用注解 取代 xml配置文件. @Component取代<bean class=""> @Component(" ...