No history yet

Введение в Python Backend

Выбор фреймворка для бэкенда

Когда речь заходит о создании серверной части веб-приложения на Python, выбор обычно сводится к двум основным фреймворкам: Django и Flask. Они оба мощные, но придерживаются разных философий.

Flask — это микрофреймворк. Он предоставляет только самые необходимые инструменты для создания веб-приложения. Все остальное — работа с базами данных, аутентификация пользователей, админ-панель — добавляется с помощью сторонних расширений. Это дает разработчику полную свободу и контроль, но требует больше решений и ручной настройки.

Django, напротив, следует подходу «батарейки в комплекте». Он поставляется с огромным количеством встроенных функций, включая мощную ORM для работы с базами данных, готовую админ-панель, систему аутентификации и многое другое. Это ускоряет разработку, так как многие стандартные задачи уже решены за вас, но может показаться избыточным для небольших проектов.

ХарактеристикаDjangoFlask
Философия«Батарейки в комплекте»Минимализм и расширяемость
ORMВстроеннаяЧерез расширения (напр., SQLAlchemy)
Админ-панельВстроеннаяЧерез расширения (напр., Flask-Admin)
Кривая обученияБолее крутаяПологая
Лучше всего подходит дляКрупных и сложных проектовМаленьких проектов, микросервисов, API

Настройка окружения

Независимо от выбранного фреймворка, первым шагом всегда является создание изолированного окружения. Это позволяет управлять зависимостями для каждого проекта отдельно, избегая конфликтов версий. Стандартный инструмент для этого в Python — модуль venv.

# Создание виртуального окружения
python -m venv venv

# Активация в Windows
venv\Scripts\activate

# Активация в macOS/Linux
source venv/bin/activate

После активации окружения можно устанавливать необходимые пакеты с помощью pip. Командная строка теперь будет указывать на то, что вы работаете внутри venv.

# Установка Flask
pip install Flask

# Установка Django
pip install Django

Чтобы зафиксировать зависимости проекта, их сохраняют в файл requirements.txt. Это стандартная практика, которая позволяет другим разработчикам (или вам в будущем) легко воссоздать окружение.

# Создание файла с зависимостями
pip freeze > requirements.txt

# Установка зависимостей из файла
pip install -r requirements.txt

Основы работы с базами данных

Вместо написания сырых SQL-запросов, в Python-фреймворках принято использовать ORM (Object-Relational Mapping). Эта технология позволяет вам работать с таблицами базы данных как с обычными Python-классами, а с записями — как с объектами этих классов. ORM берет на себя преобразование вашего кода в SQL-запросы.

В Django ORM встроена и является одной из его ключевых особенностей. Модели данных описываются в файле models.py.

# Файл models.py в приложении Django

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

Во Flask нет встроенной ORM, но самой популярной библиотекой для работы с базами данных является SQLAlchemy, которая интегрируется через расширение Flask-SQLAlchemy. Принцип похож: вы описываете модели в виде классов.

# Пример модели для Flask с SQLAlchemy

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    price = db.Column(db.Float, nullable=False)

ORM абстрагирует вас от конкретной СУБД. Вы пишете код на Python, а ORM генерирует SQL, подходящий для PostgreSQL, MySQL или SQLite.

Создание RESTful API

RESTful API — это архитектурный стиль для создания веб-сервисов. Он использует стандартные HTTP-методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами (например, пользователями, продуктами, статьями). API позволяет вашему бэкенду обмениваться данными с фронтендом или другими сервисами в универсальном формате, чаще всего JSON.

Создать простой API-endpoint во Flask очень легко. Достаточно создать функцию, которая возвращает словарь, и Flask автоматически преобразует его в JSON-ответ.

from flask import Flask, jsonify

app = Flask(__name__)

products = [
    {'id': 1, 'name': 'Ноутбук', 'price': 1200},
    {'id': 2, 'name': 'Мышь', 'price': 25}
]

@app.route('/api/products', methods=['GET'])
def get_products():
    return jsonify(products)

В Django для создания API обычно используют мощную библиотеку Django REST Framework (DRF). Она предоставляет инструменты для быстрой разработки API, включая сериализаторы (для преобразования сложных типов данных, таких как модели Django, в JSON) и готовые классы представлений.

# serializers.py в DRF
from rest_framework import serializers
from .models import Product

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ['id', 'name', 'price']

# views.py в DRF
from rest_framework import viewsets
from .models import Product
from .serializers import ProductSerializer

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

Этот небольшой фрагмент кода на DRF уже создает полный набор CRUD-операций (Create, Read, Update, Delete) для модели Product, доступных через API.

Quiz Questions 1/5

Какой фреймворк Python следует философии «батарейки в комплекте», предоставляя множество встроенных функций, таких как ORM и админ-панель?

Quiz Questions 2/5

Для чего в разработке на Python используется файл requirements.txt?

Мы рассмотрели основы бэкенд-разработки на Python: выбрали фреймворк, настроили окружение, научились работать с моделями данных и создали простые API-endpoints. Это фундамент, на котором строятся более сложные веб-приложения.