Flask Blueprint 的作用
DOCUMENT:
使用蓝图的模块化应用
Flask的 app 和 Blueprint蓝图 就好比 Django 的project 和 app, 可以使应用模块化
1. url_prefix & static_folder & template_folder为可选参数。
2. 不定义template_folder,默认去主app配置的模板目录下查找模板(一般为templates);
3. 如果定义了template_folder,且template_folder与templates的模板文件重名,优先使用templates的模板文件。
4. static_folder用法和template_folder类似。
5. 项目不大的话,尽量用主app默认的template_folder和static_folder。
- 一个项目可以具有多个Blueprint
- 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
- 在一个应用中,一个模块可以注册多次
- Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
- 在一个应用初始化时,就应该要注册需要使用的Blueprint
- 但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。
- Blueprint对象用起来和一个应用/Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效
FROM: Flask-蓝图(blueprint)
目录和代码
./app
├── main (主体模块:主要定义 uri 和 逻辑的 blueprint py 文件)
├── static(静态文件目录:css)
├── templates(模版文件目录:通用 html )
├── app.py
# /app/main/main.py
from flask import Blueprint
''' simple case '''
app_test = Blueprint(name="app_test", import_name=__name__)
@app_test.route("/")
def show():
return "<h1>app_test<h1>"
# /app/app.py
from flask import Flask, Response
import os
# 用户应用的 目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# import blueprint
from main.main import app_test
app = Flask(__name__)
@app.route('/')
def index():
return Response('<h1>hello world</h1>')
# register blueprint , set url prefix
app.register_blueprint(blueprint=app_test, url_prefix='/api')
if __name__=='__main__':
app.run(debug=True)
当前目录结构
./app
├── main (主体模块:主要定义 uri 和 逻辑的 blueprint py 文件)
├── main.py
├── static(静态文件目录:css)
├── templates(模版文件目录:通用 html )
├── app.py
显示结果
访问根目录和/api 显示如下
Reference
使用蓝图的模块化应用
Python全栈:flask的blueprint蓝图使用
python flask框架学习(二):flask 蓝图 blueprint的应用
Flask-蓝图(blueprint)