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

 更新时间:2010年12月28日 22:33:56   作者:  
虽然Cookie的标准是不允许:冒号出现在key里面的,但是我们的开发人员是很可爱的,常常会让我们意想不到。
为了做好兼容性,只能选择兼容:冒号。

很简单,修改一下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 requirements.txt的具体使用

    Python requirements.txt的具体使用

    requirements.txt文件是项目的依赖包及其对应版本号的信息列表,本文主要介绍了Python requirements.txt的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • keras slice layer 层实现方式

    keras slice layer 层实现方式

    这篇文章主要介绍了keras slice layer 层实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 浅谈python中的错误与异常

    浅谈python中的错误与异常

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细的总结一下python中的错误和异常
    2021-06-06
  • 如何利用pyinstaller打包Python程序为exe可执行文件

    如何利用pyinstaller打包Python程序为exe可执行文件

    这篇文章主要给大家介绍了关于如何利用pyinstaller打包Python程序为exe可执行文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python脚本实现一键自动整理办公文件

    Python脚本实现一键自动整理办公文件

    这篇文章主要介绍了Python实现脚本一键自动整理办公文件,文件下载文件夹就变得乱七八糟,整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档。下面小编就给大家分享自动化整理文件的小技巧,需要的朋友可以参考一下文章内容
    2022-02-02
  • 像线程一样管理进程的Python multiprocessing库

    像线程一样管理进程的Python multiprocessing库

    multiprocessing库是基于threading API,它可以把工作划分为多个进程.有些情况下,multiprocessing可以作为临时替换取代threading来利用多个CPU内核,相应地避免Python全局解释器锁所带来的计算瓶颈.本文详细介绍了Python multiprocessing库,需要的朋友可以参考下
    2021-05-05
  • python文件操作的简单方法总结

    python文件操作的简单方法总结

    在本篇文章里小编给大家整理的是关于python文件操作的简单方法知识点,有需要的朋友们可以学习下。
    2019-11-11
  • python多进程共享变量

    python多进程共享变量

    这篇文章主要为大家详细介绍了python多进程共享变量的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • pandas的drop_duplicates无法去重问题解决

    pandas的drop_duplicates无法去重问题解决

    在我们利用Pandas进行数据清洗的时候,往往会用到drop_duplicates()进行去重,本文主要介绍了pandas的drop_duplicates无法去重问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    这篇文章主要介绍了Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍,需要的朋友可以参考下
    2014-06-06

最新评论