Flask в Python: создаём сайт с нуля — гайд для новичков
План статьи
- Введение
- Установка и настройка окружения
- Основы Flask: структуры проекта
- Создание базового приложения на Flask
- Работа с шаблонами Jinja2
- Маршрутизация в Flask
- Обработка форм и работа с базами данных
- Деплой приложения
- Популярные вопросы и ответы
- Заключение
Введение
Flask — это микрофреймворк для создания веб-приложений на языке Python. Он является отличным выбором для начинающих, так как он прост в освоении и обладает всей необходимой функциональностью для создания мощных веб-приложений. В этой статье мы шаг за шагом рассмотрим процесс создания сайта с использованием Flask, начиная с установки и заканчивая деплоем приложения на сервер.
Установка и настройка окружения
Для начала работы с Flask нам потребуется настроить наше рабочее окружение. Убедитесь, что у вас установлен Python. Если Python еще не установлен, скачайте его с официального сайта и установите.
$ python --version
$ pip --version
Затем создайте виртуальное окружение для вашего проекта:
$ python -m venv myenv
$ source myenv/bin/activate
После активации виртуального окружения установите Flask:
$ pip install Flask
Основы Flask: структура проекта
Структура проекта на Flask довольно гибкая, но есть несколько ключевых элементов, которые мы рассмотрим далее. Основные файлы и директории включают:
app.py
— основной файл приложения.templates/
— директория для HTML-шаблонов.static/
— директория для статичных файлов (CSS, JavaScript, изображения).
Создание базового приложения на Flask
Начнем с создания простого приложения на Flask. Создайте файл app.py
и добавьте следующий код:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return Hello, Flask!
if __name__ == '__main__':
app.run(debug=True)
Запустите приложение командой:
$ python app.py
Теперь ваше приложение доступно по адресу http://127.0.0.1:5000/.
Работа с шаблонами Jinja2
Flask использует мощный шаблонизатор Jinja2 для динамического создания HTML. Создадим файл templates/index.html
:
<!DOCTYPE html>
<html>
<head>
<title>Flask App</title>
</head>
<body>
<h1>Hello, Flask!</h1>
</body>
</html>
Изменим app.py
для использования шаблона:
from flask import render_template
@app.route('/')
def home():
return render_template('index.html')
Маршрутизация в Flask
Flask позволяет легко создавать маршруты для вашего приложения. Добавим еще один маршрут:
@app.route('/about')
def about():
return render_template('about.html')
Создадим файл templates/about.html
с примерным содержимым:
<!DOCTYPE html>
<html>
<head>
<title>About</title>
</head>
<body>
<h1>About Page</h1>
</body>
</html>
Обработка форм и работа с базами данных
При создании веб-приложений часто возникает необходимость обработки форм и работы с базами данных. Рассмотрим простой пример обработки формы:
from flask import request
@app.route('/submit', methods=['POST'])
def submit():
name = request.form['name']
return fHello, {name}!
Создадим HTML форму в templates/index.html
:
<form method=post action=/submit>
<input type=text name=name placeholder=Enter your name />
<button type=submit>Submit</button>
</form>
Для работы с базами данных мы можем использовать библиотеку SQLAlchemy. Установите ее с помощью pip:
$ pip install Flask-SQLAlchemy
Пример использования SQLAlchemy:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
@app.route('/add_user', methods=['POST'])
def add_user():
name = request.form['name']
new_user = User(name=name)
db.session.add(new_user)
db.session.commit()
return User added successfully!
Деплой приложения
Чтобы развернуть приложение на Flask, потребуется платформа для хостинга, например, Heroku или AWS. Рассмотрим деплой на Heroku:
- Создайте файл
Procfile
с содержимым: - Создайте файл
requirements.txt
с зависимостями проекта: - Зарегистрируйтесь на Heroku и установите Heroku CLI.
- Выполните команды для деплоя:
web: gunicorn app:app
Flask
gunicorn
Flask-SQLAlchemy
$ heroku login
$ heroku create
$ git add .
$ git commit -m Initial commit
$ git push heroku master
$ heroku open
Популярные вопросы и ответы
Почему следует использовать виртуальное окружение?
Виртуальное окружение позволяет изолировать зависимости проекта, что предотвращает конфликты с глобальными пакетами Python.
Как отлаживать приложение на Flask?
Для отладки включите параметр debug=True
в вызове app.run()
. Это позволит видеть ошибки и перезагружать сервер при изменении кода.
Можно ли использовать Flask для создания крупных проектов?
Да, хотя Flask часто используется для небольших приложений, он также подходит для создания крупных проектов. Flask-расширения и модульная структура помогают масштабировать приложение.
Заключение
Мы рассмотрели основные шаги по созданию веб-приложения на Flask: от установки и настройки окружения до деплоя на сервер. Flask — мощный и гибкий инструмент, который отлично подходит как для новичков, так и для опытных разработчиков. Экспериментируйте с кодом, добавляйте новую функциональность, и вскоре вы сможете создавать свои собственные сложные веб-приложения.