Введение
Вы когда-нибудь ловили себя на мысли, что тратите выходные на написание шаблонного кода для бэкенда? Вместо того чтобы продумывать архитектуру, вы копируете одни и те же куски из прошлых проектов, забывая про тесты и документацию. А потом на ревью коллеги задают неудобные вопросы: «Почему у тебя N+1 запрос?», «Где валидация?», «А почему эндпоинт синхронный?»
С появлением больших языковых моделей ситуация изменилась. Теперь можно делегировать рутину ИИ, но только если правильно формулировать запросы. В этой подборке — 15 проверенных промтов для Django и FastAPI, которые помогают проектировать модели, писать эндпоинты, оптимизировать запросы и готовить код к ревью. Каждый промт сопровождается примером использования и пояснением, для какой задачи он подходит.
Все промты протестированы на моделях GPT-4, Claude 3 и Llama 3 в 2026 году. Они не заменят инженерное мышление, но избавят от механической работы.
1. Генерация моделей Django с учётом связей и индексов
Задача: Быстро создать модели для нового приложения, не забыв про индексы, ограничения и related_name.
Промт:
Ты — опытный Django-разработчик. Сгенерируй модели для приложения `blog` со следующими сущностями: Author (имя, email, bio), Post (заголовок, текст, дата публикации, автор, теги), Comment (текст, автор, пост, дата).
Требования:
- Используй `models.TextField` для bio и текста поста.
- Для тегов используй `django-taggit`.
- Добавь индексы на поля `published_date` и `author`.
- Укажи `related_name` для обратных связей.
- Добавь `__str__` и `Meta` с сортировкой.
Выведи только код моделей с комментариями.
Пример использования: Вы создаёте блог и хотите за 5 минут получить готовые модели. Скопируйте промт, подставьте свои поля. Модель выдаст код, который можно сразу вставить в models.py.
Пояснение: Промт заставляет ИИ учесть типичные ошибки: отсутствие индексов, неправильные related_name, забытые __str__. Это экономит время на ревью.
2. Создание сериализаторов Django REST Framework
Задача: Написать сериализаторы с валидацией и вложенными объектами.
Промт:
На основе моделей Author, Post, Comment сгенерируй сериализаторы DRF.
Требования:
- Для Post используй вложенный сериализатор автора (только имя).
- Добавь поле `comments_count` (количество комментариев).
- Валидация: заголовок не короче 5 символов, текст не пустой.
- Для Comment сделай `author` read-only (берётся из request.user).
- Используй `SerializerMethodField` для `comments_count`.
Выведи код с импортами.
Пример использования: В serializers.py вставьте сгенерированный код, замените request.user на self.context['request'].user в представлении.
Пояснение: Промт автоматически добавляет аннотации и методы, которые часто забывают новички. Это ускоряет разработку API.
3. Эндпоинты Django с пагинацией и фильтрацией
Задача: Создать ViewSet с фильтрацией, поиском и сортировкой.
Промт:
Создай ViewSet для модели Post с использованием Django REST Framework.
Требования:
- Пагинация: 10 элементов на страницу.
- Фильтрация по автору (author_id), дате (date_from, date_to).
- Поиск по заголовку и тексту (search).
- Сортировка по дате и количеству комментариев (ordering).
- Разрешения: чтение — всем, создание — аутентифицированным.
- Используй `django-filter` и `SearchFilter`.
Выведи код ViewSet, urls.py и настройки фильтров.
Пример использования: Подключите django-filter в INSTALLED_APPS, добавьте бэкенды фильтрации в настройки. Скопируйте код в views.py и urls.py.
Пояснение: Промт охватывает сразу несколько аспектов: пагинацию, фильтрацию, права доступа. Это избавляет от необходимости писать boilerplate вручную.
4. Асинхронные эндпоинты FastAPI с Pydantic
Задача: Написать асинхронный CRUD для FastAPI с валидацией через Pydantic.
Промт:
Сгенерируй асинхронные эндпоинты FastAPI для сущности `Item` (id, name, description, price).
Требования:
- Используй Pydantic-модели для входа и выхода.
- Асинхронные функции с `async def`.
- Подключение к базе через `databases` (SQLAlchemy Core).
- Обработка ошибок: 404, 422.
- Добавь зависимости для получения сессии БД.
Выведи код main.py, models.py, schemas.py.
Пример использования: Создайте проект, установите fastapi, databases, sqlalchemy. Вставьте код, запустите uvicorn main:app --reload.
Пояснение: Промт сразу даёт рабочий каркас с асинхронностью, что критично для высоких нагрузок. Подходит для микросервисов.
5. Оптимизация запросов Django (устранение N+1)
Задача: Найти и исправить N+1 запросы в существующем коде.
Промт:
Проанализируй следующий Django-код и найди N+1 запросы. Предложи оптимизацию с помощью `select_related` и `prefetch_related`. Объясни, почему возникла проблема.
Код:
[вставьте ваш код]
Пример использования: Вставьте фрагмент из views.py, где выводится список постов с авторами и комментариями. Модель предложит использовать select_related('author') и prefetch_related('comments').
Пояснение: N+1 — классическая проблема на ревью. Промт помогает не только исправить, но и понять причину.
6. Написание тестов для Django (pytest-django)
Задача: Сгенерировать тесты для API с использованием фикстур.
Промт:
Напиши тесты для эндпоинта создания поста (POST /api/posts/) с использованием pytest-django.
Требования:
- Фикстуры для пользователя и авторизации.
- Проверка успешного создания (201).
- Проверка валидации (400) при пустом заголовке.
- Проверка доступа без аутентификации (401).
- Используй `APIClient` из DRF.
Выведи код conftest.py и test_posts.py.
Пример использования: Скопируйте в tests/, запустите pytest. Тесты сразу покажут, работает ли ваш эндпоинт.
Пояснение: Промт охватывает типичные сценарии, включая негативные. Это ускоряет написание тестов и повышает покрытие.
7. Документирование API с помощью drf-spectacular
Задача: Автоматически сгенерировать OpenAPI-схему для Django.
Промт:
Настрой drf-spectacular для проекта Django. Добавь аннотации к ViewSet для Post, чтобы в Swagger отображались параметры фильтрации и примеры ответов. Выведи настройки settings.py, urls.py и пример аннотации.
Пример использования: Установите drf-spectacular, следуйте инструкциям. После запуска сервера откройте /api/docs/ — увидите интерактивную документацию.
Пояснение: Документация важна для ревью и для фронтенда. Промт помогает быстро её настроить.
8. Миграции Django без боли
Задача: Создать миграции для сложных изменений (например, добавление поля с дефолтом).
Промт:
У меня есть модель Post с полем `views` (IntegerField, default=0). Нужно добавить поле `slug` (SlugField, unique=True) и заполнить его на основе заголовка. Напиши миграцию с использованием `RunPython` для заполнения slug. Учти, что таблица большая — предложи безопасный способ без блокировки.
Пример использования: Вставьте в makemigrations, затем отредактируйте миграцию по совету модели.
Пояснение: Промт помогает избежать ошибок при миграциях на продакшене, особенно с большими таблицами.
9. Асинхронные задачи с Celery и FastAPI
Задача: Запускать долгие задачи в фоне и возвращать результат.
Промт:
Настрой Celery для FastAPI. Создай задачу `send_email`, которая принимает адрес и текст. Добавь эндпоинт для запуска задачи и эндпоинт для проверки статуса. Используй Redis как брокер. Выведи код celery_app.py, tasks.py, main.py.
Пример использования: Запустите Redis, затем celery -A celery_app worker --loglevel=info. Проверьте работу через Swagger.
Пояснение: Промт даёт готовую интеграцию, которую часто приходится собирать по кусочкам из документации.
10. Валидация данных в Pydantic с кастомными валидаторами
Задача: Добавить сложную валидацию полей (например, проверка формата телефона).
Промт:
Создай Pydantic-модель User с полями: email, phone, age. Добавь валидаторы:
- email: стандартный EmailStr.
- phone: должен соответствовать формату +7XXXXXXXXXX.
- age: целое число от 18 до 100.
Используй `validator` из Pydantic v2. Выведи код.
Пример использования: Вставьте в schemas.py, используйте в эндпоинтах FastAPI.
Пояснение: Кастомные валидаторы — частый источник багов. Промт помогает написать их правильно.
11. Обработка ошибок и логирование в Django
Задача: Настроить централизованное логирование и кастомные страницы ошибок.
Промт:
Настрой логирование в Django: логировать ошибки 500 в файл `errors.log`, использовать формат с временем и модулем. Добавь кастомный обработчик для 404 и 500. Выведи настройки LOGGING, views для ошибок, urls.py.
Пример использования: Добавьте в settings.py, создайте шаблоны 404.html и 500.html.
Пояснение: Правильное логирование упрощает отладку и производит хорошее впечатление на ревью.
12. Кэширование в FastAPI с Redis
Задача: Кэшировать ответы эндпоинта для снижения нагрузки.
Промт:
Добавь кэширование в FastAPI с помощью Redis. Создай декоратор `cache`, который кэширует ответ на 60 секунд. Используй `aioredis`. Приведи пример для эндпоинта получения списка товаров.
Пример использования: Установите aioredis, настройте подключение. Оберните эндпоинт декоратором.
Пояснение: Кэширование — важная тема для собеседований и ревью. Промт даёт готовое решение.
13. Рефакторинг кода с помощью ИИ
Задача: Улучшить читаемость и производительность существующего кода.
Промт:
Проведи рефакторинг следующего кода на Python: убери дублирование, улучши именование, добавь типизацию. Объясни изменения.
Код:
[вставьте код]
Пример использования: Вставьте функцию, которая кажется громоздкой. Модель предложит разбить её на части и добавить аннотации типов.
Пояснение: Такой промт полезен перед отправкой на ревью, чтобы код соответствовал стандартам.
14. Генерация README для проекта
Задача: Написать понятный README с инструкцией по запуску.
Промт:
Сгенерируй README.md для проекта на Django/FastAPI. Укажи: описание, требования, установку, запуск, тесты, лицензию. Используй Markdown.
Пример использования: Скопируйте в корень проекта, дополните деталями.
Пояснение: Хороший README — лицо проекта. Промт помогает не забыть важные разделы.
15. Подготовка к деплою: Docker и переменные окружения
Задача: Создать Dockerfile и docker-compose для Django/FastAPI.
Промт:
Напиши Dockerfile и docker-compose.yml для Django-проекта с PostgreSQL и Redis. Используй multi-stage сборку, переменные окружения через .env. Добавь healthcheck.
Пример использования: Разместите файлы в проекте, запустите docker-compose up --build.
Пояснение: Промт учитывает лучшие практики: multi-stage, healthcheck, вынос секретов в .env.
Заключение
Эти 15 промтов покрывают ключевые этапы бэкенд-разработки на Python: от моделей до деплоя. Они не заменят вас, но сделают рутину быстрее, а код — чище. Главное — всегда проверяйте сгенерированный код, адаптируйте под свои задачи и не забывайте про тесты.
Попробуйте применить хотя бы три промта в следующем проекте — и вы заметите, как освободится время для более важных задач. А если у вас есть свои любимые промты, делитесь в комментариях.
Полезные ссылки:
- Документация Django: https://docs.djangoproject.com/
- Документация FastAPI: https://fastapi.tiangolo.com/
- Pydantic: https://docs.pydantic.dev/
- Celery: https://docs.celeryq.dev/
Комментарии