Первое приложение Flask
В предыдущей главе мы успешно установили Flask. Далее мы можем создать простое приложение Flask.
Сначала создайте файл с именем app.py и добавьте следующее содержимое:
Пример ( app.py )
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
Запустите приложение Flask из командной строки:
python app.py
Вы увидите, как запустится сервер разработки Flask и отобразит что-то вроде следующего:
... * Running on http://127.0.0.1:5000 Press CTRL+C to quit * Restarting with stat * Debugger is active! * Debugger PIN: 977-918-914 ...
Откройте браузер, перейдите по адресу http://127.0.0.1:5000/, вы должны увидеть сообщение "Hello, World!", что означает, что Flask успешно установлен и работает.

Никогда не называйте файлflask.py, это вызовет конфликт с самой библиотекой Flask и приведёт к ошибке импорта.
Анализ кода:
-
from flask import Flask: Эта строка кода из
flaskимпортируется из модуляFlaskclass.FlaskКласс является ядром фреймворка Flask и используется для создания экземпляров приложения Flask. -
app = Flask(__name__): Эта строка кода создаёт экземпляр приложения Flask.
__name__— это специальная переменная Python, которая, когда модуль запускается напрямую, равна'__main__', когда он импортируется другими модулями, — это имя модуля. Передача__name__даетFlaskКонструктор позволяет приложению Flask находить и загружать файлы конфигурации. -
@app.route('/'): Это декоратор, который сообщает Flask, какой URL должен вызывать функцию ниже. В этом примере он задает корневой URL (т. е. домашнюю страницу сайта).
-
def hello_world():: Здесь определяется функция с именем
hello_worldФункция, которая будет вызвана, когда пользователь посетит корневой URL. -
return 'Hello, World!': Эта строка кода —
hello_worldВозвращаемое значение функции. Когда пользователь посетит корневой URL, эта строка будет отправлена обратно в браузер пользователя. -
if __name__ == '__main__':: Эта строка кода — условная проверка того, запущен ли этот модуль напрямую, а не импортирован другими модулями. Если он запущен напрямую, будет выполнен следующий блок кода.
-
app.run(debug=True): Эта строка кода вызывает
runметод экземпляра приложения Flask, запускает встроенный сервер разработки Flask.debug=Trueпараметр включает режим отладки, что означает, что приложение будет автоматически перезагружаться при изменении кода, а при возникновении ошибки предоставляется отладчик.
Если вы установилиpython-dotenv, вы можете создать в каталоге проекта файл.flaskenv, упростив команду:
# 文件路径:.flaskenv FLASK_APP=app FLASK_DEBUG=True

После настройки просто запуститеflask run— и всё, не нужно каждый раз указывать--appпараметры:
(.venv) $ flask run * Serving Flask app 'app' * Debug mode: on * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
Если вы назовёте файлapp.pyилиwsgi.py, Flask сможет автоматически его обнаружить, и даже--appможно опустить. Но явно указывать его — хорошая привычка.
Режим отладки
Во время разработки рекомендуется включить режим отладки, который предоставляет две важные возможности:
- Автоматическая перезагрузка: После изменения и сохранения кода сервер автоматически перезапускается, без ручных действий.
- Интерактивный отладчик: При возникновении ошибки в коде в браузере отображается подробная информация об ошибке и стек вызовов.
Как включить:
(.venv) $ flask --app app run --debug * Debug mode: on * Restarting with stat * Debugger is active! * Debugger PIN: 123-456-789
Предупреждение о безопасности: Интерактивный отладчик в режиме отладки позволяет выполнять произвольный Python-код в браузере. Хотя он защищён PIN-кодом,никогда не включайте режим отладки в производственной среде。
Сравнение способов запуска
кромеflask runкоманды, вы также увидите другой способ запуска:
Пример
if __name__ == "__main__":
app.run(debug=True)
Затем используйтеpython app.pyдля запуска.
| Как запустить | Преимущества | Недостатки |
|---|---|---|
| flask run | Поддерживает аргументы командной строки (--host, --port, --debug) с гибкой настройкой; автоматически загружает .flaskenv | Нужно запоминать параметры команды |
| python app.py | Простой и интуитивно понятный | Негибко, режим отладки требует изменения кода; Flask официально не рекомендует |
Flask официально рекомендует использовать командуflask run. Если вы пишете в кодеapp.run()и одновременно используетеflask run, Flask разумно проигнорирует вызовapp.run()и выведет предупреждение жёлтым текстом.
Добавьте больше содержимого в ответ
Функции представления могут возвращать не только простые строки, но и HTML-содержимое:
Пример
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
# Возвращает многострочный HTML, Flask автоматически устанавливает Content-Type в text/html
return """
<h1>Добро пожаловать в EXAMPLE учебник по Flask</h1>
<p>Это веб-приложение, созданное с помощью Flask.</p>
<ul>
<li>Изучите систему маршрутизации</li>
<li>Изучите рендеринг шаблонов</li>
<li>Изучите операции с базой данных</li>
</ul>
"""
Перейдите по адресу http://127.0.0.1:5000/, вывод будет следующим:

Конечно, писать HTML непосредственно в коде Python быстро станет трудно поддерживать. В следующих главах мы расскажем, как использовать шаблоны, чтобы отделить HTML от кода Python.
Другие расширения