首页
仓库
文档
nginx手册
Docker手册
workerman
Flask
PHP
python
RabbitMQ
其他
Linux
占位1
占位2
目录
###说明 是flask提供的一种应用程序组织化的方法,把不同功能分到不同文件,最后将这些文件汇总起来。 将不同处理功能的代码分开放,再将这些代码注册到蓝图上,最后将蓝图注册到应用程序。 ###新建包 比如在根目录新建apps目录 用于存放控制器 在apps目录内新建`__init__.py`设置文件夹为包 ###新建文件 index.py ```python from flask import Blueprint #导入蓝图模块 #from flask import Blueprint, current_app #导入调用app模块 # Blueprint两个参数('蓝图名字',蓝图所在位置',url前缀) #注意:url前缀对该蓝图下所有route都起作用 参数3 不是必须 #如果不设置url前缀 注册路由的时候需要完整路径 /index,/index/list,/index/show index_blue = Blueprint('index',__name__,url_prefix='/index') #创建一个蓝图 @index_blue.route('/') #该路由链接变成 /index/ def index(): #app = current_app._get_current_object() #使用 _get_current_object() 方法获取应用程序对象app #print(app.config) return '首页/index/' @index_blue.route('/list') #该路由链接变成 /index/list/ def list(): return '首页/index/list/' @index_blue.route('/show') def show(): return '首页/index/show' #该路由链接变成 /index/show/ ``` ###注册蓝图 ```python from flask import Flask from apps.index import index_blue app=Flask('my_app') app.register_blueprint(index_blue) #将蓝图注册到app中 if __name__=='__main__': app.run(debug=True,host='0.0.0.0',port=6666) ``` ###调用 http://127.0.0.1:6666/index/ http://127.0.0.1:6666/index/list http://127.0.0.1:6666/index/show ###其他用法 ```python 1、static_folder:设置蓝图的静态目录 # 设置静态目录 login_blue = Blueprint('login', __name__,static_folder='static_login') # 访问该蓝图的静态目录,就可以通过路径/static_login/静态目录下的文件名 # 例子:http://127.0.0.1:5000/static_login/11.jpg # 如果蓝图注册的时候设置了url_prefix,则为 url_prefix/static_login/ # 例子:http://127.0.0.1:5000/login/static_login/11.jpg 2、更改静态目录的路径(url)名称 login_blue = Blueprint('login',__name__,static_folder='static_login',static_url_path='/s') 静态文件目录路径将有/static_login变成/s http://127.0.0.1:5000/static_login/11.jpg # 访问不了 http://127.0.0.1:5000/s/11.jpg # 可以访问 3、设置蓝图自己的模板文件目录template_folder login_blue = Blueprint('login', __name__,template_folder='template') @login_blue.route('/login') def admin(): return render_template('index.html') 蓝图会从自己的template目录下找模板文件,找不到再去全局的templates目录中找 注意:蓝图也有钩子函数(请求扩展),除了before_first_request这个装饰器没有外,其他基本跟app的一样 ```