让python的Cookie.py模块支持冒号做key的方法

yipeiwu_com7年前Python基础
为了做好兼容性,只能选择兼容:冒号。

很简单,修改一下Cookie.Morsel
复制代码 代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""MorselHook, fix Cookie.CookieError: Illegal key value: ys-tab:entrance:e
"""

import Cookie
import string

_Morsel = Cookie.Morsel

class MorselHook(_Morsel):
"""
>>> import inspect
>>> (inspect.getargspec(MorselHook.set)[3])[0]
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-.^_`|~:"
>>> cookie = Cookie.SimpleCookie()
>>> cookie.load("ys-tab:entrance:e=abc; webpy_session_id=75eb60dcc83e2d902146af0bb7f47afe61fbd2b2")
>>> print cookie
Set-Cookie: webpy_session_id=75eb60dcc83e2d902146af0bb7f47afe61fbd2b2;
Set-Cookie: ys-tab:entrance:e=abc;
"""
def set(self, key, val, coded_val, LegalChars=Cookie._LegalChars+':', idmap=string._idmap, translate=string.translate):
return super(MorselHook, self).set(key, val, coded_val, LegalChars, idmap, translate)

Cookie.Morsel = MorselHook

# 在你需要使用到Cookie的地方先让上面的代码执行一遍


if __name__ == '__main__':
import doctest
doctest.testmod()

相关文章

Python协程的用法和例子详解

Python协程的用法和例子详解

从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, datum = yield),可以产出值,也可以不...

Python中的相关分析correlation analysis的实现

Python中的相关分析correlation analysis的实现

相关分析(correlation analysis) 研究两个或两个以上随机变量之间相互依存关系的方向和密切程度的方法。 线性相关关系主要采用皮尔逊(Pearson)相关系数r来度量连续...

Python中几种属性访问的区别与用法详解

起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作。例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行...

Python中将变量按行写入txt文本中的方法

Python中将变量按行写入txt文本中的方法

先看一个简单的例子:将变量写入txt文本中 f = open('E:/test.txt','w') f.write('hello world!') Out[3]: 12 f.c...

tornado捕获和处理404错误的方法

Tornado 文档中提到但是这样只能捕获到handlers中列出的路径请求中的错误。 如果只定义了(r"/hello", HelloHandler) 一条规则,那么只能捕获到 /hel...