Недоумение фляги с приложением
Я начинаю проект flask
, и в своем коде у меня есть
from flask import Flask, render_template, abort
app = Flask(__name__)
Теперь что такое app
?
Я следую этому руководству, и меня особенно смущает структура, потому что он выбрал каталог с именем app/
и является его app/__init__.py
он имеет
from flask import Flask
app = Flask(__name__)
from app import views
и в его app/views.py
он имеет
from app import app
Что, черт возьми, со всеми этими app
'??
Ответы
Ответ 1
Я думаю, что основная путаница в строке:
from app import app
У вас есть пакет python (папка с файлом __init__.py
) с именем "приложение". В этой папке теперь вы импортируете переменную "app", указанную ниже в файле __init__.py
:
app = Flask(__name__)
Переименуйте папку из приложения, чтобы сказать "myproject". Затем вы вызовете
from myproject import app
Кроме того, вы будете импортировать представления как
from myproject import views
Ответ 2
Автор сделал свой код бесполезным сбивающим с толку, выбирая имя пакета, которое совпадает с именем экземпляра обычного объекта объекта Flask. Это вас больше всего интересует:
app = Flask(__name__)
Вот документация по объекту приложения Flask:
http://flask.pocoo.org/docs/api/#application-object
Чтобы избежать путаницы, я рекомендую использовать официальную документацию Flask вместо этого руководства.
Ответ 3
Это немного запутанно, из-за выбора бедных имен.
-
app = Flask(__name__)
: здесь app
является WSGI приложение, оно реализует соответствующий интерфейс, а также поддерживает все, что может предложить Flask нас в дополнение к этому.
-
from app import app
: импортирует именно этот объект app
из пакета app
.
-
from app import view
: Для чего он импортирует views
там, это немного тайна, я полагаю, он хочет убедиться, что привязки вида выполнены. (Я предпочел бы сделать это в run.py
). В любом случае, это своего рода цикл импорта между двумя модулями, который, по меньшей мере, запутывает.