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:

猜你喜欢

转载自www.cnblogs.com/zhangjunkang/p/10233987.html