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 等等
而後在咱們的監控窗口顯示咱們請求的每條記錄:
相關文章
相關標籤/搜索