Как делить флеш-приложение на несколько файлов py?
В настоящее время мое приложение-фляга состоит из одного файла test.py
с несколькими маршрутами и определенного маршрута main()
. Есть ли способ создать файл test2.py
, который содержит маршруты, которые не обрабатывались в test.py
?
@app.route('/somepath')
def somehandler():
# Handler code here
Я обеспокоен тем, что в test.py
слишком много маршрутов, и я хотел бы сделать так, чтобы я мог запускать python test.py
, который также будет собирать маршруты на test.py
, как если бы он был частью того же файл. Какие изменения я должен внести в test.py
и/или включить в test2.py
, чтобы заставить это работать?
Ответы
Ответ 1
Вы можете использовать обычную структуру пакетов Python, чтобы разделить ваше приложение на несколько модулей, увидеть документы Flask.
Однако
Flask использует концепцию чертежей для создания компонентов приложения и поддержки общих шаблонов в приложении или между приложениями.
Вы можете создать подкомпонент вашего приложения в качестве Blueprint в отдельном файле:
simple_page = Blueprint('simple_page', __name__, template_folder='templates')
@simple_page.route('/<page>')
def show(page):
# stuff
И затем используйте его в основной части:
from yourapplication.simple_page import simple_page
app = Flask(__name__)
app.register_blueprint(simple_page)
Чертежи могут также связывать определенные ресурсы: шаблоны или статические файлы. Пожалуйста, обратитесь к фляжным документам для всех деталей.
Ответ 2
Я хотел бы порекомендовать флакон-пустой на GitHub.
Он предоставляет простой способ понять чертежи, несколько представлений и расширений.
Ответ 3
Разделение приложения на чертежи - отличная идея. Однако, если этого недостаточно, и если вы хотите разделить сам Blueprint на несколько файлов py, это также возможно с помощью обычной системы импорта модулей Python, а затем перебирать все маршруты, которые импортируются из других файлов.
Я создал Gist с кодом для этого:
https://gist.github.com/Jaza/61f879f577bc9d06029e
Насколько мне известно, это единственный возможный способ разделить Blueprint на данный момент. Невозможно создать "под-чертежи" в Flask, хотя проблема открыта с большим обсуждением об этом:
https://github.com/mitsuhiko/flask/issues/593
Кроме того, даже если бы это было возможно (и, вероятно, он мог бы использовать некоторые фрагменты из этого потока проблем), суб-чертежи могут быть слишком ограничительными для вашего варианта использования в любом случае - например. если вы не хотите, чтобы все маршруты в подмодуле имели один и тот же префикс URL.
Ответ 4
Вы можете разделить, как Джанго. Смотрите ниже скелет
https://github.com/rohitchormale/cookiecutter-flask