bottle step by step (一) bottle的简单介绍

bottle step by step (一) bottle的简单介绍
本站原创:转帖请标明转自: http://bbs.python520.com
本文转自: http://bbs.python520.com/thread-673-1-1.html
bottle是个非常小巧的python web 框架,只有一个文件,3000多行,代码也差不多都读了一遍。发现的确不错。现在推荐给大家

关于bottle的一些搭配
  • ORM
        ORM我选用了简单的autumn,因为并不会用到复杂的关系数据。
  • 模板
        模板使用 jinja2,本身贴近django模板的语法,用起来也很熟悉。
  • form类
        form类使用 WTForms。
一切看起来都很美好,似乎该有的功能都有了,但是如果真的如此简单,就不会有文章开头那段话了。
要使他们协作起来是件麻烦的事情,最麻烦的就是unicode的问题。
本着输入的最开始就要转成unicode,输出之前才转成bytes的原则,在使用这些类的时候有一下几点要遵循:

0.autumn在连接MySQL的时候,一定要用 use_unicode=True,这样从MySQL获取的数据才默认是unicode的
  • autumn_db.conn.connect(
  • DATABASE['engine'],
  • db=DATABASE['db'],
  • user=DATABASE['user'],
  • passwd=DATABASE['passwd'],
  • host=DATABASE['host'],
  • port=DATABASE['port'],
  • use_unicode=True
  • )

复制代码
  • 使用WTForms的时候,要使用 form = RegForm(obj=request.forms) 的方式(bottle要使用0.10),这样才能form的数据才会默认就是unicode
  • autumn 的Model传入的参数必须是unicode,而仅仅如此还是不行的,由于MySQLdb的bug(我个人认为),要求excute函数传入的 values必须是bytes类型,而sqlite3则要求传入unicode,所以我们要改一下autumn的代码,在query.py的190行增加 代码:

    • #Add-Begin by dantezhu in 2011-11-14 12:17:10
    •     if db.conn.dbtype == 'mysql':
    •         values = [it.encode('utf8') if isinstance(it, unicode) else it for it in values]
    • #Add-End

    复制代码
    并在connection.py第6行增加如下代码:
    • #Add-Begin by dantezhu in 2011-12-16 01:56:34
    •         self.dbtype = dbtype
    • #Add-End

    复制代码
    OK,到此为止大功告成!
    所有的组件都是我们可拆卸的,如果网站够简单,可以只有一个bottle;如果网站太复杂,我们可以任意的添加自己需要的模块,而且它们是真正做事的。
    这还只是个开始

    说了这么多。接下讲点最简单的入门
    bottle 官方网站:http://bottlepy.org/
    首先下载 bottle  https://github.com/defnull/bottle/raw/master/bottle.py
    把 bottle.py 放到目标文件夹
    新建1.py:
    • from bottle import route, run
    • #team:bbs.python520.com
    • @route('/hello/:name')
    • def index(name='World'):
    •     return '<b>Hello %s!</b>' % name

    • run(host='localhost', port=8080)

    复制代码

然后运行
  • python 1.py

复制代码

显示成功监听 8080端口
ctrl+c退出
然后在火狐中打开 http://127.0.0.1:8080/hello/abc http://127.0.0.1:8080/hello/python520.com 等等

然后在我们的监控窗口显示我们请求的每条记录:

你可能感兴趣的:(python,Bottle)