Python - Flask 无脑学习实践 (二)Flask Blueprint 简单扩展

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 显示如下
index
api

Reference

使用蓝图的模块化应用
Python全栈:flask的blueprint蓝图使用
python flask框架学习(二):flask 蓝图 blueprint的应用
Flask-蓝图(blueprint)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章