1.初識Flask

Flask的優勢

  • Flask 確實很「輕」,不愧是 Micro Framework ,從 Django 轉向 Flask 的開發者必定會如此感慨,除非兩者均爲深刻使用過
  • Flask 自由、靈活,可擴展性強,第三方庫的選擇面廣,開發時能夠結合本身最喜歡用的輪子,也能結合最流行最強大的 Python 庫
  • 入門簡單,即使沒有多少 web 開發經驗,也能很快作出網站
  • 很是適用於小型網站
  • 很是適用於開發 web 服務的 API
  • 開發大型網站無壓力,但代碼架構須要本身設計,開發成本取決於開發者的能力和經驗
  • 各方面性能均等於或優於 Django
  • Django 自帶的或第三方的好評如潮的功能,Flask 上總會找到與之相似第三方庫
  • Flask 靈活開發, Python 高手基本都會喜歡 Flask ,但對 Django 卻可能褒貶不一
  • Flask 與關係型數據庫的配合使用不弱於 Django ,而其與 NoSQL 數據庫的配合遠遠優於 Django
  • Flask 比 Django 更加 Pythonic ,與 Python 的 philosophy 更加吻合

Flask的安裝

pip3 install flask

快速開始

# 引入flask
from flask import Flask

# 實例化flask
app = Flask(__name__)

# 啓動應用
app.run()

經過上面的代碼便可啓動一個flask應用,試試在瀏覽器地址欄輸入http://127.0.0.1:5000,由於沒有配置視圖頁面,因此你看到的404頁面,這個時候咱們的應用已經運行起來了。html

路由配置

Flask中是經過裝飾器實現路由的。web

from flask import Flask

app = Flask(__name__)

# 配置路由
@app.route("/")

# 定義路由執行的方法
def index():
    return "<h1>Flask</h1>"

app.run()

頁面渲染

  • Flask的方法默認不會加載,咱們要手動加載須要的方法
  • Flask提供了render_template方法用來渲染咱們的視圖模版頁面。
  • Flask默認的模版文件存放位置爲templates,咱們先在根目錄建立templates文件夾,並在裏面建立login.html文件,進行以下編輯。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>我是登陸頁面</h1>
</body>
</html>

下面咱們經過路由來進行這個頁面的渲染shell

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/login")
def login():
    return render_template("login.html")

app.run()

重定向

使用redirect方法實現頁面視圖的重定向數據庫

from flask import Flask, render_template, redirect

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/login")
def login():
    return render_template("login.html")

# 這裏是個重定向
@app.route("/redirect")
def rr():
    return redirect('/login')

app.run()

jsonify

返回一個序列化後的json格式數據,至關於對請求頭設置Content-Type: application/jsonjson

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/jsonify")
def jsify():
    return jsonify({"name": "JWB", "age": 23})

app.run()

上面代碼運行結果以下:flask

{
  "age": 23, 
  "name": "JWB"
}

send_file

send_file()函數用來,打開併發送文件,能夠發送文本、圖片、小視頻等api

from flask import Flask, send_file

app = Flask(__name__)


@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/file")
def file():
    return send_file("1.jpg")

app.run()

在瀏覽器裏面訪問路由,會直接打開圖片文件。瀏覽器

啓動配置

run()函數中添加如下方法,能夠對啓動項進行配置安全

  • host 主機地址,默認127.0.0.1
  • port 端口,默認 5000
  • debug 是否開啓debug,默認false

ps: 開啓debug後,Flask服務會在文件修改事後,自動重啓babel

# 引入flask
from flask import Flask

# 實例化flask
app = Flask(__name__)

# 啓動應用
app.run(host="0.0.0.0", port=9527, debug=True)

Flask 經常使用庫列表

flask-script

爲Flask提供強大的命令行操做,與Django shell相似。

flask-login

Flask user session管理,提供諸如login_user, logout_user, login_required, current_user等功能,也是其餘不少Flask庫的基礎。

flask-admin

爲Flask應用提供操做簡單且易於擴展的數據庫管理界面,與Django自帶的數據庫管理app相似。

Flask-WTF

Flask與WTForms的集成,提供強大的Form安全和校驗機制,與Django內置的Form功能相似。

flask-principal

Flask強大的權限管理機制,靈活性強,提供了一個權限管理的基礎框架,是不少Flask權限相關擴展的基礎。

flask-restful

一個強大的Flask RESTful框架,簡單好用。

flask-api

至關於Django REST Framework的Flask版,是另外一個強大的Flask RESTful框架。

Flask-Mail

Flask-Mail 爲Flask應用添加了SMTP 郵件發送功能

Flask-User

Flask-User集成了用戶管理相關功能,並容許對功能作定製性修改,其相關功能包括Register, Confirm email, Login, Change username, Change password, Forgot password等。

Flask-User 基於Flask-SQLAlchemyNoSQL數據庫沒法使用。

flask-security

Flask-Security讓開發者可以很快的爲應用添加經常使用的安全機制,其整合了Flask-Login, Flask-Mail, Flask-Principal, Flask-Script等應用。其安全機制包括:

  • Session based authentication
  • Role management
  • Password encryption
  • Basic HTTP authentication
  • Token based authentication
  • Token based account activation (optional)
  • Token based password recovery / resetting (optional)
  • User registration (optional)
  • Login tracking (optional)
  • JSON/Ajax Support

flask-babel

Flask國際化和本地化擴展,基於Babel

flask-locale

爲Flask應用添加語言包,與flask-babel相似。

相關文章
相關標籤/搜索