• 第六章 Flask——蓝图(BluePrint)对象


    第六章 Flask——蓝图(BluePrint)对象

    一、初识蓝图(BluePrint)

    二、蓝图(BluePrint)详解

    一、初识蓝图(BluePrint)

    什么是蓝图(what):

    蓝图就是另一种形式(不可以被执行的)的Flask实例,它的作用就是将功能与主服务分开。

    为什么使用蓝图(why):

    比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中。

    如何使用蓝图(how):

    1.创建一个项目然后将目录结构做成

    2.创建一个蓝图文件detail.py

    from flask import Blueprint # 导入 Flask 中的蓝图 Blueprint 模块
    
    detail_blueprint = Blueprint("serv",__name__) # 实例化一个蓝图(Blueprint)对象
    
    @detail_blueprint.route("/add_user",methods=["POST","GET"]) # 这里添加路由和视图函数的时候与在Flask对象中添加是一样的
    def add_user():
        return "添加用户"

    3.在flask_app.py里注册蓝图文件

    from flask import Flask,render_template
    from serv import detail # 导入此前写好的蓝图模块
    app = Flask(__name__,template_folder="templates")
    
    app.debug = True
    
    app.register_blueprint(detail.detail_blueprint) # 在Flask对象中注册蓝图模块中的蓝图对象
    
    
    @app.route("/info", methods=["GET", "POST"])
    def student_info(request):
        stu_id = int(request.args["id"])
        return f"Hello {stu_id}"  # Python3.6的新特性 f"{变量名}"
    
    
    if __name__ == '__main__':
        app.run() # 现在Flask对象中并没有写任何的路由和视图函数

     开启服务,然后访问 http://127.0.0.1:5000/add_user 查看结果

    二、蓝图(BluePrint)详解

    其实我们可以理解成一个没有run方法的Flask对象,这个理论虽然有很多的漏洞,但是对于刚接触蓝图的你来说,就这么样理解,没有错

    下面来看一下,在实例化蓝图的时候可以传递的参数都有什么,你就能完全理解了。

    flask的蓝图就好像django的app

    主视图flask_app.py

    from flask import Flask,render_template
    from serv import detail # 导入此前写好的蓝图模块
    app = Flask(__name__)
    
    app.debug = True
    
    app.register_blueprint(detail.detail_blueprint) # 在Flask对象中注册蓝图模块中的蓝图对象
    
    
    @app.route("/info", methods=["GET", "POST"])
    def student_info(request):
        stu_id = int(request.args["id"])
        return f"Hello {stu_id}"  # Python3.6的新特性 f"{变量名}"
    
    
    if __name__ == '__main__':
        app.run() # 现在Flask对象中并没有写任何的路由和视图函数

    蓝图detail.py

    from flask import Blueprint,render_template # 导入 Flask 中的蓝图 Blueprint 模块
    
    detail_blueprint = Blueprint("serv",__name__,
                                 template_folder="serv_temp",
                                 static_folder="serv_static",
                                 static_url_path="/serv_static"
                                 ) # 实例化一个蓝图(Blueprint)对象
    
    @detail_blueprint.route("/add_user",methods=["POST","GET"]) # 这里添加路由和视图函数的时候与在Flask对象中添加是一样的
    def add_user():
        return render_template("add_user.html")

    add_user.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加用户</title>
    </head>
    <body>
        <h1>add_user</h1>
        <img src="/serv_static/timg.jpg">
    </body>
    </html>

    效果如下

    从这个例子中我们总结出:

    Blueprint 其实可以理解为一个了没有run方法的 Flask 对象

    只要Blueprint被 Flask 注册了,就一定会生效

    !!!切记:蓝图内部的视图函数及route不要出现重复,!!!

  • 相关阅读:
    想不赚钱都难的7大行业
    [转帖]一位年轻商人的经验感悟
    对待下级十二条准则
    让自己幸福的10条秘诀
    孤独感
    “3+3”看华为云FusionInsight如何引领“数据新基建”持续发展
    【乘风破浪的开发者】丁一超:从AI实战营出发探索未知的AI世界
    适用初学者的5种Python数据输入技术
    遥感影像处理有高招,“专治”各类花式并发的述求!
    从“小众”到“首选”,推动云原生产业落地华为云作用几何?
  • 原文地址:https://www.cnblogs.com/neymargoal/p/9918214.html
Copyright © 2020-2023  润新知