Python Backend и AI: Путь к Junior и Middle
Введение в Python Backend
Выбор фреймворка для бэкенда
Когда речь заходит о создании серверной части веб-приложения на Python, выбор обычно сводится к двум основным фреймворкам: Django и Flask. Они оба мощные, но придерживаются разных философий.
Flask — это микрофреймворк. Он предоставляет только самые необходимые инструменты для создания веб-приложения. Все остальное — работа с базами данных, аутентификация пользователей, админ-панель — добавляется с помощью сторонних расширений. Это дает разработчику полную свободу и контроль, но требует больше решений и ручной настройки.
Django, напротив, следует подходу «батарейки в комплекте». Он поставляется с огромным количеством встроенных функций, включая мощную ORM для работы с базами данных, готовую админ-панель, систему аутентификации и многое другое. Это ускоряет разработку, так как многие стандартные задачи уже решены за вас, но может показаться избыточным для небольших проектов.
| Характеристика | Django | Flask |
|---|---|---|
| Философия | «Батарейки в комплекте» | Минимализм и расширяемость |
| 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.
Какой фреймворк Python следует философии «батарейки в комплекте», предоставляя множество встроенных функций, таких как ORM и админ-панель?
Для чего в разработке на Python используется файл requirements.txt?
Мы рассмотрели основы бэкенд-разработки на Python: выбрали фреймворк, настроили окружение, научились работать с моделями данных и создали простые API-endpoints. Это фундамент, на котором строятся более сложные веб-приложения.