Подтвердить что ты не робот

Недоумение фляги с приложением

Я начинаю проект 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 '??

4b9b3361

Ответ 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). В любом случае, это своего рода цикл импорта между двумя модулями, который, по меньшей мере, запутывает.