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)