Flask

概念

  1. 如果项目很大,不写在单独一个py文件里,此时需要蓝图;蓝图提供了一种组织python packages的方式
  2. 蓝图为应用提供模块化,划分目录。
  3. 一个蓝图代表一个包(package,init,可以查看flasky的例子),有自己的templates, static等等。。多个蓝图组成大型程序

一. 蓝图URL前缀

xxx = Blueprint('account', name,url_prefix='/xxx'),那就不用在每个@app.route里写完整的url,例如@app.route('/acc/login'),@app.route('/acc/logout')。只要xxx = Blueprint('account', name,url_prefix='/acc'),@app.route('/login'),@app.route('/logout')即可。

二. 蓝图子域名

xxx = Blueprint('account', name,subdomain='admin')
前提需要给配置SERVER_NAME: app.config['SERVER_NAME'] = 'xxx.com:5000'
访问时:admin.xxx.com:5000/login.html

三. 示例程序

注册蓝图在项目的__init__.py里,单个蓝图是在模块里的__init__.py或单个模块文件xxx.py
https://github.com/janetat/Flaskii/tree/master/Blueprint_simple
https://github.com/janetat/Flaskii/tree/master/Blueprint_complicated

四. 蓝图中的请求扩展(请求扩展看随笔)

可以针对app写全局的请求扩展(全部蓝图有效),例如在views文件夹里的__init__.py写

@app.before_request
def process_request(*args, **kwargs):
    print('来了')

也可以针对某个蓝图写(单个蓝图有效),例如在views文件夹下的account.py写

@account.before_request
def process_request(*args, **kwargs):
    print('来了')
原文地址:https://www.cnblogs.com/allen2333/p/9017964.html