一. Python 現階段三大主流Web框架 Django Tornado Flask 對比
1.Django 主要特色是大而全,集成了不少組件,例如: Models Admin Form 等等, 無論你用獲得用不到,反正它全都有,屬於全能型框架html
2.Tornado 主要特色是原生異步非阻塞,在IO密集型應用和多任務處理上佔據絕對性的優點,屬於專一型框架web
3.Flask 主要特色小而輕,原生組件幾乎爲0, 三方提供的組件請參考Django 很是全面,屬於短小精悍型框架django
Django 一般用於大型Web應用因爲內置組件足夠強大因此使用Django開發能夠一鼓作氣json
Tornado 一般用於API後端應用,遊戲服務後臺,其內部實現的異步非阻塞真是穩得一批flask
Flask 一般應用於小型應用和快速構建應用,其強大的三方庫,足以支撐一個大型的Web應用後端
Django 優勢是大而全,缺點也就暴露出來了,這麼多的資源一次性所有加載,確定會形成一部分的資源浪費瀏覽器
Tornado 優勢是異步,缺點是乾淨,連個Session都不支持app
Flask 優勢是精悍簡單,缺點是穩定性差(由於是使用大量的第三方庫,因此當Flask更新的時候,庫也要更新,可是庫不是Flask公司的,因此會有不兼容的現象.)框架
二 . 初識Flask
1 . 安裝Flask 異步
pip install Flask
2 . 六行代碼寫出一個頁面
from flask import Flask # 導入Flask類 app = Flask(__name__) # 實例化Flask對象app @app.route("/") # app中的route裝飾器 def index(): # 視圖函數 return "hello world" app.run() # 啓動Flask web服務
啓動項目,控制檯以下 :
使用瀏覽器訪問上面的地址,效果以下圖 :
至此,你已經實現了flask的第一個程序 !
3 . Flask中的Response "三劍客"
咱們知道 Django中的response有3中形式 ( HttpResponse, redirect, render ), 對比Django,來看看Flask有哪些返回形式.
1) . 返回 HttpRespomse 對象
@app.route("/home") def home(): return "hello world" # 至關於django中return HttpResponse("")
2) . 重定向 ( redirect )
from flask import redirect # 導入flask中的redirect @app.route("/home") def home(): return redirect("/login") # 重定向至"/login"路徑
當訪問"/home"這個路徑的時候,視圖函數home會重定向到路徑"/login" 並會觸發"/login"對應的視圖函數。
3)返回模板頁面(render_template)
from flask import render_template # 導入flask中的render_template @app.route("/home") def home(): return render_template("home.html") # 渲染模板home.html並返回
Flask中的render_template至關於django中的render
注意:若是要使用render_template 返回渲染的模板,請在項目的主目錄中加入一個目錄 templates,以下圖:
不然會遇到jinja2的異常:
4 . flask的 "小兒子"
1) . 返回標準的json字符串
from flask importjsonify @app.route("/json") def jsons(): d = {"name":"jinjiaodawangba"} return jsonify(d)
返回json字符串,而且會在響應頭中加Content-Type:application/json,即告訴瀏覽器數據是json字符串,瀏覽器收到後會自動進行反系列化,而使用json.dumps()則不會加響應頭。