flask簡介:python
flask是一款很是流行的Python Web框架,出生於2010年,做者是Armin Ronacher,原本這個項目只是做者在愚人節的一個玩笑,後來因爲很是受歡迎,進而成爲一個正式的項目。目前爲止最新的版本是0.11.1。sql
flask自2010年發佈第一個版本以來,大受歡迎,深得開發者的喜好,而且在多個公司已經獲得了應用,flask能如此流行的緣由,能夠分爲如下幾點:數據庫
微框架、簡潔、只能他須要作的,給開發提供了很大的擴展性。flask
Flask和相關的依賴(Jinja二、Werkzeug)設計得很是優秀,用起來很爽。瀏覽器
開發效率很是高,好比使用SQLAlchemy的ORM操做數據庫能夠節省開發者大量書寫sql的時間。服務器
社會活躍度很是高。app
Flask的靈活度很是之高,他不會幫你作太多的決策。即便作已經幫你作出選擇,你也能很是容易的更換成你須要的,好比:框架
使用Flask開發數據庫的時候,具體是使用SQLAlchemy仍是MonyoEngine或者是不用ORM而直接於MySQL-Python這樣的底層驅動進行開發都是能夠的,選擇權徹底掌握在你本身的手中。區別於Django,Django內置了很是完善和豐富的功能,而且若是你想替換成你本身想要的,要麼不支持,要麼很是麻煩。函數
把默認的Jinija2模板引擎替換成Mako引擎或者是其餘模板引擎都是很是容易的。url
### 第一個flask程序講解:
1.第一次建立項目的時候,要添加flask的虛擬環境。添加虛擬環境的時候,必定要選擇到python這個文件。
好比你的flask的虛擬環境的目錄在/User/Virtualenv/flask-env/bin/python.
2.flask程序代碼的詳細解釋:
# encoding:utf-8 #從flask這個框架中導入Flask這個類 from flask import Flask #初始化一個Flask對象 #Falsk() #須要傳遞一個參數__name__ #1.方便flask框架區尋找資源 #2.方便flask插件好比Flask-Sqlalchemy出現錯誤的時候,好去尋找問題所在的位置 app = Flask(__name__) #@app.route是一個裝飾器 #@開頭,而且在函數的上面,說明是裝飾器 # 這個裝飾器的做用,是作一個url與視圖韓式的映射 #127.0.0.1:5000/-->去請求hello_world這個函數,而後將結果返回給瀏覽器 @app.route('/') def hello_world(): return 'Hello World!' #若是當前這個文件是做爲入口程序運行,那麼就執行app.run() if __name__ == '__main__': #app.run() #啓動一個應用服務器,來接受用戶的請求 #while True: # listen() app.run()
###設置debug模式
1.在app.run()中傳入一個關鍵字參數debug:app.run(debug=True),就設置當前項目爲debug模式
2.debug模式的兩大功能:
*當程序出現爲題的時候,能夠在頁面中看到錯誤信息和出錯的位置。
*只要修改了項目的'python'文件,程序會自動加載,不須要手動從新啓動服務器。
###使用配置文件:
1.新建一個‘config.py’文件
2.在主app文件中導入這個文件。而且配置到'app',示例代碼以下:
import config app.config.from_object(config)
3.還有許多的其餘參數,都是放在這個配置文件中,好比‘SECRET_KEY’和‘SQLALCHEMY’這些配置,都是在這個文件中。
###url傳參數:
1.參數的做用:能夠在相同的URL,可是指定不一樣的參數,來加載不一樣的數據。
2.在flask中如何使用參數:
@app.route('/article/<id>') def article(id): return u'您請求的參數是:%s'% id
*參數須要放在兩個尖括號中。
*視圖函數中須要放和url中的參數同名的參數
###反轉URL:
1.什麼叫作反轉URL:從視圖函數到url的轉換叫作反轉url
2.反轉日url的用處:
*在頁面重定向的時候,會使用url反轉
*在模板中,也會使用url反轉
###頁面跳轉和重定向
1.用處:在用戶訪問一些須要登陸的頁面的時候,若是用戶沒有登陸,那麼可讓他重定向到登陸頁面
2.代碼實現
、、、
from flask import redirect,url
redirect(url_for('login'))
、、、
###Flask渲染Jinja2模板和傳參:
1.如何渲染模板:
*模板放在‘templates’文件夾下
*從‘flask’中導入‘render_template’函數。
*在視圖函數中,使用‘render_template’
*