• get_argument返回unicode数据类型的问题

    get_argument的使用细节
    服务器君一共花费 8.949 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    在 Tornado 里,self.get_argument返回的数据类型为unicode

    chars = self.get_argument('chars')
    self.write( str(type(chars)) )
    # 输出
    # <type 'unicode'>
    

    get_argument在获取数据的时候,会进行decode("utf-8")操作,因为get_argument最终调用了tornado.escape下面的to_unicode方法,也就是argument会通过decode("utf-8")来转成unicode:

    def to_unicode(value):
        """Converts a string argument to a unicode string.
    
        If the argument is already a unicode string or None, it is returned
        unchanged.  Otherwise it must be a byte string and is decoded as utf8.
        """
        if isinstance(value, _TO_UNICODE_TYPES):
            return value
        assert isinstance(value, bytes)
        return value.decode("utf-8")
    
    # to_unicode was previously named _unicode not because it was private,
    # but to avoid conflicts with the built-in unicode() function/type
    _unicode = to_unicode
    

    get_argument获取数据之后一般需要先使用u.encode('utf-8')转换成string类型后才能使用。

    如果用get_argument无法获取数据,可以用更加原始的方法通过self.request.arguments获取GET或者POST的所有参数字典,这个字典是未经过decode处理的原生参数,每个参数都是字典里面的一项,主要每个参数对应的项都是一个列表。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android里的ContentValues 2 个条目
  2. [数据库技术] MySQL常用自带函数 3 个条目
  3. [移动开发] Android开发基础知识 4 个条目
  4. [智力开发与知识管理] 整体性学习步骤 9 个条目
  5. [数据库技术] 数据库范式篇 5 个条目
  6. [Python程序设计] Django后台管理系统 2 个条目
  7. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  8. [Python程序设计] Tornado背景知识介绍 4 个条目
  9. [移动开发] Activity 初步知识 2 个条目
  10. [PHP程序设计] PHP里的布尔类型 3 个条目
  11. [软件工程与项目管理] 呈现树的构建 13 个条目
  12. [Python程序设计] Django Web环境配置 2 个条目
窗口 -- [博客]