Flask【第二章】:Flask三劍客(HTTPResponse、render、redirect)和輔招(jsonify、send_file)
阿新 • • 發佈:2019-01-07
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使用一致,作用:返回模組由瀏覽器渲染
需要匯入該模組
fromflask 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: