Я пытаюсь создать простое, но не тривиальное приложение с Flask, и я постоянно сталкиваюсь с ситуацией, которая не очень хорошо объясняется в документах.
Я хочу, чтобы мое приложение было разделено между различными модулями, но трудно получить доступ к основному объекту app
(или db
from flask-sqlalchemy
) из любого другого места, кроме основного модуля. Похоже, вы должны действительно написать свой собственный способ рассматривать его как глобальный, к которому все имеет доступ, что требует некоторого сомнительного кода и немного времени.
Оба app
и db
создаются на уровне, где создается основное приложение, и в каждом примере предполагается, что они доступны на верхнем уровне. Но если я разделяю разные обработчики URL-адресов на разные модули, я теряю способность использовать @app.route
decorator. Я могу обойти это с помощью app.add_url_rule('/...', some.module...)
, но опять же приложение не будет передано этой функции.
То же самое происходит с db
- я не знаю, должен ли я вставлять его в g
или сделать его доступным через app
каким-то образом. Это не помогает мне перемещать модели в отдельный модуль - как я могу получить доступ к db
при импорте? Все примеры снова предполагают, что он доступен только как локальная переменная.
Я пропустил что-то очевидное, или я пытаюсь использовать колбу для неправильной задачи здесь?