Bottle是一个小巧实用的python框架,整个框架只有一个几十K的文件,但却包含了路径映射、模板、简单的数据库访问等web框架组件,而且语法简单,部署方便,很受python开发者的青睐。Python初学者可以好好的了解一下这个框架,但是也不得不提醒大家这个框架在使用中必须注意的一些事项。

unicode

作为非英文应用的开发者,unicode是一个绕不过去的坑。 web.py 对此是不作处理的,全都按原编码方式处理。 bottle 则作了一个有点奇怪的处理:

request.query 或 request.forms 都是一个 FormDict 类型,其特点是:当以属性方式访问数据时——如 request.query.foo,返回的结果是 unicode ,当以字典试访问数据时——如 request.query['foo'],则返回的结果是原编码字符串。混合使用的时候,一不小心就会出问题……

比如:大部分时候都用属性方式,但是某个数据需要有特定默认值的时候,就会习惯性地用字典方式操作: request.query.get("foo", "bar") ,这时就容易出编码错误。这种情况应该使用 request.query.getunicode() 函数。更彻底的方式是用 args=request.query.decode("utf-8") 然后 args.foo 或 args["foo"] 就都可以返回 unicode 了。至于在实际应用中,具体要用哪种方式来处理,就自己看情况选择了。

cookies

bottle 在这点上问题主要是出在 path 上,web.py 的 setcookie 函数参数选择很少,比如 path 就没有,默认只能存放于"/",虽然这算是一个小小的限制,但使用中基本不会有什么问题。但是bottle就坑了,它的 set_cookie 的默认 path 是当前路径,也就是说,在这个页面上存入的 cookie 在别的页面通常是取不到的,不熟悉这点的人几乎都要栽在这里。

而且更坑的是:set_cookie 有 path 参数可以指定 path ,但 get_cookie 却没有这个 path 参数可选——也就是说,你即使设置了其它 path ,如果 get_cookie 的时候不是刚好在那个 path 下的话,也取不到……那这个问题怎么破了,大家可以尝试,把所有的 cookie 都放到"/"下面,至少目前用下来感觉没问题。

除了上面这两个坑以外,还有一个不算坑,但是算是用户体验度不好的一点,就是:web.py 的 cookie 可以存放任何可持久化的数据,比如 dict/list 。但是 bottle 的 cookie 似乎只能放字符串,一放 list就 出错。对于这个问题,当然也不是不能解决,可以用一个 json.dumps/json.loads解决。

以上就是python  bottle框架中,可能会常常遇到的几个小坑,不知大家有没有同样的感觉。虽然有一些坑,但是不可否认,这个框架还是很好用的,大家以后在使用中多注意一些便可。

推荐学习:《Bottle 框架

Python开发者须知 —— Bottle框架常见的几个坑的更多相关文章

  1. python开发者框架套件总结: package 包 frameworks

    python开发者的package 包 框架套件总结: frameworks     开发环境: anaconda pycharm django awesome-django : 介绍 django ...

  2. Python的Bottle框架中实现最基本的get和post的方法的教程

    这篇文章主要介绍了Python的Bottle框架中实现最基本的get和post的方法的教程,Bottle框架在Python开发者中的人气很高,需要的朋友可以参考下 1.GET方式: # -*- cod ...

  3. 关于python的bottle框架跨域请求报错问题的处理

    在用python的bottle框架开发时,前端使用ajax跨域访问时,js代码老是进入不了success,而是进入了error,而返回的状态却是200.url直接在浏览器访问也是正常的,浏览器按F12 ...

  4. python bottle框架

    python bottle框架 简介: Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. Bottl ...

  5. Python自动化运维之29、Bottle框架

    Bottle 官网:http://bottlepy.org/docs/dev/index.html Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除 ...

  6. python bottle框架(WEB开发、运维开发)教程

    教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架 ...

  7. 让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求

    这两天在用python的bottle框架开发后台管理系统,接口约定使用RESTful风格请求,前端使用jquery ajax与接口进行交互,使用POST与GET请求时都正常,而Request Meth ...

  8. python之Bottle框架

    一.简单的Bottle框架 1)bottle框架简介 安装 pip install bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架. 此框架只由一个 .py 文件,除 ...

  9. Python之Bottle框架使用

    本文主要包含的内容是Bottle框架介绍和安装使用. 一.Bottle框架介绍 Bottle是一个快速小巧,轻量级的 WSGI 微型 web 框架.同时Bottle也是一个简单高效的遵循WSGI的微型 ...

随机推荐

  1. ural 1104,暴力取模

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1104 题目大意:输入一个字符串(数字与大写字母组成),输出n,n满足此字符串为n进制时, ...

  2. PostgreSql安装

    官网:http://www.postgresql.org/download/linux/redhat/ 一.安装 由于我的机子是centos6.2,所以选择RedHat的. 按照官网所说的进行安装: ...

  3. Educational Codeforces Round 1 A

    In this problem you are to calculate the sum of all integers from 1 to n, but you should take all po ...

  4. 修改客户端Webbrowser对应IE版本步骤

    制作注册表文件的过程 1,” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\MAIN\ FeatureControl\FEATURE_B ...

  5. 如何查看postfix的版本

    [root@localhost sasl2]# postconf -d | grep mail_versionmail_version = 2.10.1milter_macro_v = $mail_n ...

  6. ps aux 查看进程信息

    [root@localhost Desktop]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.3 ...

  7. [原创] 使用LP Wizard 10.5 制作 Allegro PCB封装

    本文只讲述使用 Calculator 和 Wizard 功能制作封装,通常学会使用这种方法,通用的标准封装就都可以生成了.下面以一个简单的SOIC-8封装的芯片来说明软件使用方法. 第一步,查找相关d ...

  8. Beaglebone Black– 智能家居控制系统 LAS - 网页服务器 Node.js 、Web Service、页面 和 TCP 请求转 UDP 发送

    上一篇,纯粹玩 ESP8266,写入了 init.lua 能收发 UDP.这次拿 BBB 开刀,用 BBB host 一个 web server ,用于与用户交互,数据来自 ESP8266 的 UDP ...

  9. SpringMVC 配置过滤器解决中文乱码问题

    <!-- 字符集过滤器 -->      <filter>          <filter-name>Charset</filter-name>   ...

  10. linux包的相关命令

    apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...