Вы можете добавить дополнительные маршруты в любом месте.
Однако, поскольку пакет использует фабрику приложений create_app()
, вы не можете зарегистрировать эти маршруты с помощью декоратора @app.route()
; приложение создано не таким образом, чтобы его можно было просто импортировать.
Так что да, создание модуля views.py
является хорошей организационной идеей, но создайте там также Blueprint()
и зарегистрируйте этот проект в функции create_app()
с экземпляром приложения Flask()
.
В views.py
:
from flask import Blueprint
bp = Blueprint('main', __name__)
@main.route('/')
def index():
# produce a landing page
и create_app()
, application.py
, добавьте
import views
app.register_blueprint(views.bp)
(Я использую соглашение об использовании имени переменной bp
для всех моих чертежей, а затем просто импортирую модуль и регистрирую атрибут module.bp
).
Это явный вызов import и app.register_blueprint()
, который связывает любые чертежи, используемые в Flask
проекте, с маршрутами конечного приложения. Чертежи могут иметь одинаковый префикс, в том числе без префикса.
Стоит отметить: здесь модуль views
теперь является модулем верхнего уровня рядом с application.py
. Было бы лучше, если бы все было перенесено в пакет , что дало бы вам больше свободы над тем, какие имена вы используете. Все модули в одном пакете имеют пространство имен, отделенные от других модулей верхнего уровня, таких как json
и time
и flask
, поэтому не будет конфликтов, если вы захотите использовать одно и то же имя для одного из дополнительные модули в вашем проекте.
Вы бы переместили все, кроме manage.py
, в подкаталог с именем, соответствующим проекту, и переместили application.py
в __init__.py
. Импорт может затем использовать from . import ...
для импорта из текущего пакета и т. Д.