zoukankan      html  css  js  c++  java
  • Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西

    在Flask中的蓝图 blueprint 也是非常宏伟的

    它的作用就是将 功能 与 主服务 分开

    怎么理解呢?

    比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中,本篇最后会做一个这样的例子,但是首先我们要搞清楚什么是蓝图 blueprint

    蓝图结构: 

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

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

    如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了

    在这里面有一个__init__.py这个文件里面的内容如下

    from flask import Flask
    
    from .views.add_user import add_bp
    from .views.del_user import del_bp
    from .views.edit_user import edit_bp
    from .views.get_user import get_bp
    
    
    def create_app():
        app = Flask(__name__, template_folder='templates_all', )
    
        app.register_blueprint(add_bp)
        app.register_blueprint(del_bp)
        app.register_blueprint(edit_bp)
        app.register_blueprint(get_bp)
    
        return app

    由此见得__init__.py就是构建app的一个函数,并且将views中的似乎是蓝图的东西注册进去了

    接下来看static目录,这个目录从字面意思就可以理解了,就是我们的static静态文件存放目录了

    然后就是templates目录,模板存放目录

    views中的内容:

    from flask import Blueprint, render_template, redirect, request
    
    from S import STUDENT_LIST as S
    
    get_bp = Blueprint('get_bp', __name__)
    
    
    # 展示页面
    @get_bp.route('/show')
    def get_user():
        path = request.host_url + 'add'  # 添加
        return render_template('show_page.html', S=S, path=path)
    get_user
    from flask import Blueprint, render_template, redirect, request
    
    from S import STUDENT_LIST as S
    
    add_bp = Blueprint('add_bp', __name__)
    
    
    # 添加用户页面
    @add_bp.route('/add', methods=['GET', 'POST'])
    def add_user():
        if request.method == 'POST':
            username = request.form.get('username')
            age = request.form.get('age')
            gender = request.form.get('gender')
            user_info = {'name': username, 'age': age, 'gender': gender}
            S.append(user_info)
    
            return redirect('/show')
    
        return render_template('add_user.html')
    add_user
    from flask import Blueprint, render_template, redirect, request
    
    from S import STUDENT_LIST as S
    
    del_bp = Blueprint('del_bp', __name__)
    
    
    # 删除用户页面
    @del_bp.route('/del')
    def del_user():
        id = request.args['id']
        print(id)
        S.pop(int(id) - 1)
    
        return redirect('/show')
    del_user
    from flask import Blueprint, render_template, redirect, request
    
    from S import STUDENT_LIST as S
    
    edit_bp = Blueprint('edit_bp', __name__)
    
    
    # 编辑用户页面
    @edit_bp.route('/edit', methods=['GET', 'POST'])
    def edit_user():
        id = int(request.args['id']) - 1
        edit_info = S[id]
        print(edit_info)
    
        if request.method == 'POST':
            username = request.form.get('username')
            age = request.form.get('age')
            gender = request.form.get('gender')
            user_info = {'name': username, 'age': age, 'gender': gender}
            S[id] = user_info
    
            return redirect('/show')
    
        return render_template('add_edit.html', S=edit_info)
    edit_user

    manager.py 文件中的内容

    # # 导入此前写好的蓝图模块
    from app01_add import create_app
    my_app01 = create_app()
    
    if __name__ == '__main__':
        my_app01.run(debug=True,port='8989')

    运行manage.py文件就好啦

  • 相关阅读:
    【笔记】求数据前n个主成分以及对高维数据映射为低维数据
    使用sklearn中的fetch_mldata的错误情况以及可能可行的解决方法
    【笔记】求数据的对应主成分PCA(第一主成分)
    【笔记】主成分分析法PCA的原理及计算
    【笔记】如何确定梯度计算的准确性以及调试梯度下降法
    【笔记】随机梯度下降法
    【笔记】线性回归中的梯度下降法(实现以及向量化并进行数据归一化)
    AttributeError: module 'numpy' has no attribute 'num'
    灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟?
    容器云在证券行业的探索与实践
  • 原文地址:https://www.cnblogs.com/niuli1987/p/10445530.html
Copyright © 2011-2022 走看看