• 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:

  • 相关阅读:
    搭建kafka集群
    fluentd 安装、配置、使用介绍
    彻底解决 es 的 unassigned shards 症状
    nginx 反向代理时丢失端口的解决方案
    kubernetes的imagePullSecrets如何生成及使用
    创建MySQL数据库账号
    Linux中查找文件
    Linux快速访问多个目录
    Django查询数据库返回字典dict数据
    linux 将压缩包复制到另外一个文件夹下面
  • 原文地址:https://www.cnblogs.com/zhangjunkang/p/10233987.html
Copyright © 2020-2023  润新知