Ответ 1
технически, вам не нужны чертежи, вы можете просто зарегистрировать каждый маршрут в своей функции create_app
. Вообще говоря, это не отличная идея, и это то, почему существуют чертежи.
Пример без чертежей
def create_app():
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
return app
У вас может быть одно приложение factory для тестирования и любого другого, если вы настроите его таким образом. Если вы хотите загружать разные чертежи на основе, если они находятся в процессе тестирования, вы можете сделать что-то вроде этого.
from project.config import configurations as c
def create_app(config=None):
" make the app "
app = Flask(__name__)
app.config.from_object(c.get(config, None) or c['default'])
configure_blueprints(app)
return app
def configure_blueprints(app):
" register the blueprints on your app "
if app.testing:
from project.test_bp import bp
app.register_blueprint(bp)
else:
from project.not_test_bp import bp
app.register_blueprint(bp)
тогда project/config.py
может быть следующим:
class DefaultConfig(object):
PROJECT_NAME = 'my project'
class TestingConfig(DefaultConfig):
TESTING = True
class DevConfig(DefaultConfig):
DEBUG = True
configurations = {
'testing': TestingConfig,
'dev': DevConfig,
'default': DefaultConfig
}
Создайте папку для каждого проекта, где __init__.py
в папке создает проект. Скажем, для чертежа routes
from flask import Blueprint
bp = Blueprint('routes', __name__)
from project.routes import views
то в project/routes/views.py
вы можете поместить свои представления.
from project.routes import bp
@bp.route('/')
def index():
return render_template('routes/index.html')