Олег Марков
Создание веб-приложений на Flask Python
Введение
Flask — лёгкий и гибкий фреймворк для создания веб-приложений на Python. Он предоставляет минимальный набор инструментов для работы с HTTP-запросами, шаблонами и маршрутизацией, позволяя разработчику строить приложения без излишней нагрузки.
В этой статье мы разберём основы работы с Flask: установку, создание маршрутов, работу с шаблонами и формами, интеграцию с базами данных.
Если вы хотите детальнее погрузиться в Python и создавать полноценные веб-приложения с практическими проектами, приходите на курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажёры для безлимитной практики с кодом, решение задач с ревью наставника и еженедельные встречи с менторами.
Установка Flask
Для начала установим Flask через pip:
pip install flaskСоздаём минимальное приложение:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Привет, Flask!'
if __name__ == '__main__':
app.run(debug=True)@app.route('/')задаёт маршрут для главной страницы.app.run(debug=True)запускает сервер в режиме отладки.
Работа с маршрутами
Flask позволяет создавать несколько маршрутов:
@app.route('/about')
def about():
return 'О приложении'
@app.route('/user/<username>')
def user_profile(username):
return f'Профиль пользователя: {username}'Переменные в маршрутах (<username>) позволяют динамически формировать страницы.
Шаблоны и Jinja2
Flask использует Jinja2 для работы с HTML-шаблонами. Создаём папку templates и файл index.html:
<!doctype html>
<html>
<head><title>{{ title }}</title></head>
<body>
<h1>{{ message }}</h1>
</body>
</html>В коде приложения:
from flask import render_template
@app.route('/')
def home():
return render_template('index.html', title='Главная', message='Привет, Flask!')Работа с формами
Flask позволяет обрабатывать формы через POST-запросы:
from flask import request
@app.route('/form', methods=['GET', 'POST'])
def form_example():
if request.method == 'POST':
name = request.form['name']
return f'Привет, {name}!'
return '''
<form method="post">
<input name="name">
<input type="submit">
</form>
'''Интеграция с базами данных
Для работы с базой данных можно использовать SQLAlchemy:
pip install flask_sqlalchemyПример простой модели:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)Создаём базу данных:
with app.app_context():
db.create_all()Развертывание приложения
Flask-приложение можно запускать на сервере с помощью WSGI-сервера, например, Gunicorn:
pip install gunicorn
gunicorn app:appЭто позволит обслуживать приложение в продакшн-режиме.
Заключение
Flask предоставляет удобные инструменты для быстрого создания веб-приложений, работы с маршрутами, шаблонами, формами и базами данных. Освоив основы, можно строить масштабируемые сервисы, интегрировать API и разворачивать приложения на сервере.
Для полноценного изучения Python и практического создания веб-приложений с Flask, работы с формами, шаблонами и базами данных рекомендуем курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python и веб-разработки прямо сегодня.
Частые ошибки
- Не создание папки
templatesдля HTML-шаблонов. - Неправильная настройка маршрутов с переменными.
- Использование SQLite в многопользовательских приложениях без правильной конфигурации.
Часто задаваемые вопросы
Можно ли подключать внешние API к Flask? Да, Flask легко интегрируется с внешними сервисами через
requestsили другие библиотеки.Как обрабатывать формы безопасно? Используйте POST-запросы и проверку данных через
request.form.Можно ли разворачивать Flask на VPS или облаке? Да, рекомендуется использовать WSGI-серверы, такие как Gunicorn, вместе с Nginx.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев