我有一个巨大的应用程序,很难更新它的 View 。为了“修复”这个问题,我使用 blueprints 将 View 分成了几个文件。 .问题是蓝图也变得非常大,因为每个 View 都有很长的文档,每个 View 需要不同的验证。
我曾尝试像这样进行导入
:
我有一个包含 Flask 应用程序(导入蓝图)的主文件,一个包含蓝图的文件和一个导入蓝图并在其中配置 View 的文件。问题是使用这种方法不会呈现 View ,因为流程原因。
主文件,在文件夹的根目录中:
from flask import Flask
from source import test
application = Flask(__name__)
application.register_blueprint(test)
application.run()
蓝图文件,位于根文件夹的子文件夹中:
from flask import Blueprint
test = Blueprint('test', __name__)
View 文件,位于与蓝图文件相同的子文件夹中:
from .test import test
@test.route('/home', methods=['GET', 'POST'])
def home():
return 'home'
我也曾尝试将蓝图装饰器添加到已声明的函数中,这样 View 就会添加到蓝图文件中的蓝图中,但我认为这不是一个好方法或可扩展的方法 - 而且它没有没工作 ^ - ^。
我希望在文件中创建蓝图,在其他文件中导入蓝图并向蓝图添加 View ,然后导入蓝图并将其添加到 Flask 应用程序中。
您需要在blueprint
文件中导入views
内容。
我已经创建了场景并且能够获取 View
。此外,我还更新了命名约定。
文件夹结构:
.
├── app.py
└── blueprints
├── example_blueprint.py
├── example_views.py
└── __init__.py
app.py
:
from flask import Flask
from blueprints.example_blueprint import bp
app = Flask(__name__)
app.register_blueprint(bp)
blueprints/example_blueprint.py
:
from flask import Blueprint
bp = Blueprint('bp', __name__,
template_folder='templates')
from .example_views import *
blueprints/example_views.py
:
from .example_blueprint import bp
@bp.route('/home', methods=['GET', 'POST'])
def home():
return 'home'
blueprints/__init__.py
: 空白文件
输出:
运行应用程序:
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
requirements.txt
:
Click==7.0
Flask==1.0.3
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
pkg-resources==0.0.0
Werkzeug==0.15.4
引用:
我是一名优秀的程序员,十分优秀!