1. 程式人生 > >Flask【第二章】:Flask三劍客(HTTPResponse、render、redirect)和輔招(jsonify、send_file)

Flask【第二章】:Flask三劍客(HTTPResponse、render、redirect)和輔招(jsonify、send_file)

Flask三劍客(HttpResponse、render、redirect)和輔招(jsonify、send_file)

一、Flask的三劍客

1.直接返回字串至客戶端,相當於Django中的HttpResponse

我們知道在Django中HttpResponse用來返回字串,而在flask中也可以直接返回字串,就是return 字串,例如:

@app.route("/")
def index():
    return "Hello World"

2.render_template,和Django中的render使用一致,作用:返回模組由瀏覽器渲染

需要匯入該模組

from
flask import Flask,render_template, app = Flask(__name__) @app.route("/login") def login(): return render_template("login.html") app.run()

注意:在這裡,我們需要指定template目錄的位置,以方便render_template找到。指定方法如下:

# 建立一個template目錄用來存放html模板
# 在pycharm中,右鍵該template目錄,選擇 Mark Directory as
# 選擇 Template Folder 即可

3.redirect,和Django中的redirect使用一致,作用:重定向到其他url。

需要匯入該模組

from flask import Flask,redirect
app = Flask(__name__)

@app.route("/")
def index():
    return redirect("/login")

app.run("192.168.13.69","5000",debug=True)

每當訪問“/”這個地址的時候,檢視函式redi會觸發redirect("/login")跳轉到url地址:"/login",並會觸發"/login"對應的檢視函式

二、輔招(jsonify、send_file)

1. jsonify。

作用:返回json標準的字串,並在相應頭中新增:Content-Type:application/json。告知瀏覽器這是json資料。

同樣,也需要匯入才能使用

from flask import Flask,jsonify
app = Flask(__name__)

@app.route("/json")
def jsons():
    d={"name":"admin"}
    return jsonify(d)

app.run("192.168.13.69","5000",debug=True)

2. send_file。

作用:開啟檔案並返回檔案內容給客戶端(自動識別檔案格式,並新增到相應頭中)

from flask import Flask,send_file
app = Flask(__name__)

@app.route("/file")
def files():
    return send_file("f1.py")

app.run("192.168.13.69","8000",debug=True)

三、演示:

目錄結構:

login.html內容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
這是登入頁面
</body>
</html>

f1.py程式碼如下:

from flask import Flask,redirect,render_template,jsonify,send_file
app = Flask(__name__)

@app.route("/")
def index():
    return redirect("/home")

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

@app.route("/home")
def home():
    return "我是home"

@app.route("/json")
def jsons():
    d={"name":"admin"}
    return jsonify(d)

@app.route("/file")
def files():
    return send_file("f1.py")

app.run("192.168.13.69","5000",debug=True)

瀏覽器顯示:

訪問/,跳轉到/home

訪問login:

訪問json:

訪問file: