zoukankan      html  css  js  c++  java
  • 🍖Flask蓝图 (Blueprint)

    Flask蓝图 (Blueprint)

    1.蓝图作用

    • 一般做测试的时候我们习惯将所有的程序 : 视图函数, 路由, 入口等放在一个 py 文件中
    • 但如果视图函数成千上百个, 那是不是会显得运行文件特别乱, 我们是不是应该抽取出来专门的 py 文件来进行管理呢
    • 这个时候蓝图就派上用场了, 我们可以利用蓝图对程序目录进行划分

    2.不使用蓝图, 手动分文件

    • 目录结构
    -templates  # 模板文件
    -views      # 视图文件
    	-__init__.py
        -user.py
        -order.py
    -app.py     # 启动文件
    
    • app.py
    from views import app
    if __name__ == '__main__':
        app.run()
    
    • views/__init__.py
    from flask import Flask,request
    from . import account  # 必须导
    from . import order
    from . import user
    
    app = Flask(__name__)
    
    • views/user.py
    from . import app
    @app.route('/user')
    def user():
        return 'user'
    
    • views/order.py
    from . import app
    @app.route('/order')
    def order():
        return 'order'
    

    3.蓝图基本使用命令

    • 导入蓝图
    from flask import Blueprint
    
    • 创建蓝图对象
    user_bu = Blueprint('user',__name__)    # user.py
    order_bu = Blueprint('order',__name__)  # order.py
    
    • 创建蓝图参数 : url_prefix 前缀
    user_bu = Blueprint('user',__name__,url_prefix='/user',template_folder='views_templates')
    # 使用url_prefix参数为访问视图的路径添加一个前缀,可以更加方便的管理视图函数
    # 比如之前访问的路径是 : 127.0.0.1:5000/login/
    # 那么添加之后访问的路径是 : 127.0.0.1:5000/user/login/
    
    • 创建蓝图参数 : template_folder 指定templates
    # 使用 template_folder 参数给当前蓝图单独使用templates
    # 向上查找,当前找不到,会找总 templates 文件夹
    
    • 利用蓝图创建路由关系
    @user_bu.route('/login/')   # user.py
    @order_bu.route('/chaeck_order/')  # order.py
    
    • 注册蓝图
    app.register_blueprint(user_bu)
    app.register_blueprint(order_bu)
    

    4.使用蓝图构建中小型系统目录示例

    • 目录结构
    -flask_pro
    	-flask_app
        	-__init__.py
        	-static
            -templates
            -views
            	-order.py
                -user.py
         -manage.py 
    
    • __init__.py
    from flask import  Flask
    app=Flask(__name__)
    from flask_app.views import user
    from flask_app.views import order
    app.register_blueprint(user.user_bu)
    app.register_blueprint(order.order_bu)
    
    • manage.py
    from flask_app import  app
    if __name__ == '__main__':
        app.run(port=8008)
    
    • user.py
    from flask import Blueprint
    user_bu=Blueprint('user',__name__)
    
    @user_bu.route('/login')
    def login():
        return 'login'
    
    • order.py
    from flask import Blueprint
    order_bu=Blueprint('order',__name__)
    
    @order_bu.route('/test')
    def test():
        return 'order test'
    

    5.使用蓝图构建大型系统

    • 所谓的大型并不是真正的大型, 只是做一个参考, 毕竟我们更愿意使用 Django 去创建大型项目

    • 目录结构

    │  run.py  
    │
    │
    └─pro_flask  # 文件夹
        │  __init__.py 
        │
        ├─admin        # admin应用文件夹
        │  │  views.py # 视图
        │  │  __init__.py
        │  │
        │  ├─static     # 静态资源文件夹
        │  └─templates  # 模板文件夹
        │
        └─web           # web应用文件夹
           │  views.py  # 视图
           │  __init__.py
           │
           ├─static    # 静态资源文件夹
           └─templates # 模板文件夹
    

  • 相关阅读:
    HTML5基础内容(二)
    JavaScript逻辑运算符
    JavaScript自增运算符和自减运算符
    JavaScript算数运算符和一元运算符
    CSS分页
    HTML和CSS遇到的细节问题
    JavaScript数据类型转换
    JavaScript标识符
    HTML5基础知识汇总(一)
    CSS颜色透明度
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14851636.html
Copyright © 2011-2022 走看看