Flask в Python: создаём сайт с нуля — гайд для новичков

План статьи

  1. Введение
  2. Установка и настройка окружения
  3. Основы Flask: структуры проекта
  4. Создание базового приложения на Flask
  5. Работа с шаблонами Jinja2
  6. Маршрутизация в Flask
  7. Обработка форм и работа с базами данных
  8. Деплой приложения
  9. Популярные вопросы и ответы
  10. Заключение

Введение

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:

  1. Создайте файл Procfile с содержимым:
  2. web: gunicorn app:app
  3. Создайте файл requirements.txt с зависимостями проекта:
  4. Flask
    gunicorn
    Flask-SQLAlchemy
  5. Зарегистрируйтесь на Heroku и установите Heroku CLI.
  6. Выполните команды для деплоя:
  7. $ 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 — мощный и гибкий инструмент, который отлично подходит как для новичков, так и для опытных разработчиков. Экспериментируйте с кодом, добавляйте новую функциональность, и вскоре вы сможете создавать свои собственные сложные веб-приложения.