zoukankan      html  css  js  c++  java
  • flask 中使用蓝图将路由分开写在不同文件

    flask 若想将不同的路由写在不同的文件中(如将 user 对象的相关接口写在一个文件中,将 customer 对象的相关接口写在另一个文件中),可以使用蓝图来实现。

    有关蓝图的定义:A Blueprint is a way to organize a group of related views and other code.

    更多信息详见:http://flask.pocoo.org/docs/1.0/tutorial/views/#create-a-blueprint

    都说自己写的博客自己也不一定会常看,出了问题互联网上总能找到相关信息。但总知:

    辍学,如磨刀之石,不见其损,日有所亏!

    故还是记录一下自己的解决方法,既当总结,若能方便他人也甚好。


    假设有两个模型,usercustomer, 分别将有关他们的视图函数写在两个不同的文件中:

    • user_opt.py

    from model import User
    from flask import Blueprint
    user_opt = Blueprint('user_opt', __name__)
    ​
    # 查(按名字查)
    @user_opt.route('/query_name/<user_name>', methods=['GET'])
    def query_by_name(user_name):
        users = User.query.filter(User.name == user_name).all()
        return users
    • customer_opt.py

    from model import Customer
    from flask import Blueprint
    customer_opt = Blueprint('customer_opt', __name__)
    ​
    # 查(按 id 查)
    @customer_opt.route('/query_id/<customer_id>', methods=['GET'])
    def query_by_id(customer_id):
        customer = Customer.query.filter(Customer.id == customer_id).first()
        return customer

    新建的 flask 工程均有 manage.py 文件,写好了上面两个接口之后,若想在 flask 运行时可以直接访问不在 manage.py 中的接口,还需要手动将上面写好的两个蓝图进行注册:

    • manage.py

    from flask import Flask
    import config
    from exts import db
    from user_opt import user_opt
    from customer_opt import customer_opt
    ​
    app = Flask(__name__)
    # 注册蓝图,并指定其对应的前缀(url_prefix)
    app.register_blueprint(user_opt, url_prefix="/user_opt")
    app.register_blueprint(customer_opt, url_prefix="/customer_opt")
    ​
    # 引入配置文件中的相关配置
    app.config.from_object(config)
    # 配置db
    db.init_app(app)
    ​
    ​
    @app.route('/')
    def hello_world():
        return 'Hello World!'if __name__ == '__main__':
        app.run(host="127.0.0.1", port=5000, debug=True)

    此时,运行 flask 项目,在浏览器中输入:

    http://127.0.0.1:5000/user_opt/query_id/1
    # 通过前缀 user_opt 访问 user 中的相关接口
    http://127.0.0.1:5000/customer_opt/query_name/xiaoming
    # 通过前缀 customer_opt 访问 customer 中的相关接口

    【参考文章】:flask中使用蓝图将路由分开写在不同文件实例解析

  • 相关阅读:
    bash shell if 命令参数说明
    Linux test命令
    javascript获取事件触发源
    PHP Manual 学习
    js 控制iframe 刷新
    WP7交互特性浅析及APP设计探究
    FirstDayStart点点
    关于Safari的思考(转载)
    如何使控件背景色支持TransparentKey(at Win2k/WinXP 32bit Color Desktop)
    [Bug] VisualStyleRenderer may cause GDI leak!
  • 原文地址:https://www.cnblogs.com/zishu/p/11158804.html
Copyright © 2011-2022 走看看