Flask簡介

   一. 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()則不會加響應頭。

    2) . 打開文件並返回文件內容(自動識別文件格式)
  from flask importsend_file

  @app.route("/file")
  def file():
    return send_file("01.mp4")

    自動識別文件類型,即在返回文件內容時加一個響應頭Content-Type:文件類型。

相關文章
相關標籤/搜索