15 промтов для Django: от моделей до REST API — бэкенд-разработка с нейросетями

Django — один из самых мощных и популярных бэкенд-фреймворков на Python. Но даже опытные разработчики тратят часы на рутинные задачи: написание моделей, сериализаторов, вьюх. А что если нейросеть возьмёт на себя часть этой работы? Я собрал 15 промтов, которые ускорят вашу разработку на Django — от проектирования моделей до оптимизации API. Никакой магии, только проверенные техники и примеры кода.

Базовые промты: модели и миграции

1. Проектирование модели по описанию

Промт:

"Создай модель Django для [сущности] с полями: [перечислите поля и типы]. Добавь методы str, Meta, индексы и связи с другими моделями."

Пример:

"Создай модель Django для блога с полями: title (строка), content (текст), author (ForeignKey на User), created_at (дата), published (булево). Добавь методы str, Meta, индексы и связь с комментариями."

Результат:

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    published = models.BooleanField(default=False)

    class Meta:
        indexes = [
            models.Index(fields=['created_at']),
        ]
        ordering = ['-created_at']

    def __str__(self):
        return self.title

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    text = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

Почему это работает: нейросеть понимает стандартные паттерны Django ORM и генерирует код, соответствующий официальной документации docs.djangoproject.com.

2. Генерация миграций по изменениям модели

Промт:

"Сгенерируй миграцию Django для добавления поля [поле] в модель [модель]. Учти, что поле должно иметь значение по умолчанию для существующих записей."

Пример:

"Сгенерируй миграцию Django для добавления поля is_active (BooleanField, default=True) в модель UserProfile."

Результат:

from django.db import migrations, models

class Migration(migrations.Migration):
    dependencies = [
        ('myapp', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='userprofile',
            name='is_active',
            field=models.BooleanField(default=True),
        ),
    ]

Совет: После генерации обязательно запустите python manage.py makemigrations и migrate, чтобы применить изменения в реальной БД.

3. Написание сложных ORM-запросов

Промт:

"Напиши ORM-запрос Django для [задача]. Используй агрегации, аннотации и оптимизацию с select_related/prefetch_related."

Пример:

"Напиши ORM-запрос Django для получения топ-5 авторов по количеству постов за последний месяц."

Результат:

from django.db.models import Count, Q
from datetime import timedelta
from django.utils import timezone

month_ago = timezone.now() - timedelta(days=30)

top_authors = User.objects.filter(
    posts__created_at__gte=month_ago
).annotate(
    post_count=Count('posts')
).order_by('-post_count')[:5]

Продвинутые промты: views и сериализаторы

4. Классовые вьюхи с миксинами

Промт:

"Создай view Django для [сущность] с использованием generics или миксинов. Поддержи операции CRUD."

Пример:

"Создай ListView и DetailView для модели Post с пагинацией."

Результат:

from django.views.generic import ListView, DetailView
from .models import Post

class PostListView(ListView):
    model = Post
    template_name = 'blog/post_list.html'
    context_object_name = 'posts'
    paginate_by = 10

class PostDetailView(DetailView):
    model = Post
    template_name = 'blog/post_detail.html'

5. Сериализатор DRF с валидацией

Промт:

"Напиши сериализатор Django REST Framework для модели [модель]. Добавь валидацию полей и кастомные методы."

Пример:

"Напиши сериализатор DRF для модели Post с валидацией длины title и полем author_name (read-only)."

Результат:

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    author_name = serializers.CharField(source='author.username', read_only=True)

    class Meta:
        model = Post
        fields = ['id', 'title', 'content', 'author_name', 'created_at', 'published']

    def validate_title(self, value):
        if len(value) < 5:
            raise serializers.ValidationError("Заголовок должен быть не короче 5 символов.")
        return value

6. ViewSet с кастомными действиями

Промт:

"Создай ViewSet для модели [модель] и добавь кастомное действие [действие]."

Пример:

"Создай ViewSet для модели Post и добавь действие publish, которое устанавливает published=True."

Результат:

from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Response
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

    @action(detail=True, methods=['post'])
    def publish(self, request, pk=None):
        post = self.get_object()
        post.published = True
        post.save()
        return Response({'status': 'published'}, status=status.HTTP_200_OK)

Экспертные промты: API, оптимизация и безопасность

7. Оптимизация запросов с select_related

Промт:

"Оптимизируй запрос Django, который вызывает N+1 проблему. Используй select_related и prefetch_related."

Пример:

"Оптимизируй запрос, который выводит список постов с авторами и комментариями."

Результат:

posts = Post.objects.select_related('author').prefetch_related('comments')

8. Кастомная аутентификация в DRF

Промт:

"Реализуй JWT-аутентификацию в Django REST Framework. Опиши настройку в settings.py и использование."

Результат:

Установите djangorestframework-simplejwt и добавьте в settings.py:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}

Затем добавьте URL'ы в urls.py:

from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView

urlpatterns = [
    path('api/token/', TokenObtainPairView.as_view()),
    path('api/token/refresh/', TokenRefreshView.as_view()),
]

9. Пагинация и фильтрация в DRF

Промт:

"Настрой пагинацию и фильтрацию для API на Django REST Framework. Используй django-filter."

Результат:

В settings.py:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 20,
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
}

В views.py:

from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['author', 'published']

10. Кэширование для высоконагруженных API

Промт:

"Добавь кэширование в Django REST Framework для GET-запросов. Используй cache_page или низкоуровневое кэширование."

Пример:

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from rest_framework.views import APIView
from rest_framework.response import Response

class PostListAPIView(APIView):
    @method_decorator(cache_page(60 * 15))
    def get(self, request):
        posts = Post.objects.all()
        serializer = PostSerializer(posts, many=True)
        return Response(serializer.data)

11. Безопасность: защита от SQL-инъекций и XSS

Промт:

"Проверь код Django на наличие уязвимостей и предложи исправления. Используй безопасные методы ORM и экранирование."

Результат:

Используйте ORM вместо raw SQL:

# Опасно (raw SQL)
cursor.execute("SELECT * FROM auth_user WHERE username = '%s'" % username)

# Безопасно (ORM)
User.objects.filter(username=username)

Для защиты от XSS в шаблонах используйте {{ value|escape }} — Django делает это автоматически.

12. Документирование API с OpenAPI

Промт:

"Сгенерируй OpenAPI-схему для Django REST Framework проекта. Опиши настройку и использование."

Результат:

Установите drf-spectacular и добавьте в settings.py:

REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

В urls.py:

from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView

urlpatterns = [
    path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
    path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='docs'),
]

13. Фоновые задачи с Celery

Промт:

"Интегрируй Celery в Django для выполнения фоновых задач. Напиши пример task."

Результат:

Установите celery и создайте myapp/tasks.py:

from celery import shared_task

@shared_task
def send_welcome_email(user_id):
    from .models import User
    user = User.objects.get(id=user_id)
    # логика отправки

В settings.py:

CELERY_BROKER_URL = 'redis://localhost:6379/0'

14. Дебаг и профайлинг Django-приложений

Промт:

"Опиши методы дебага Django-приложения, включая Django Debug Toolbar и профайлинг запросов."

Результат:

Установите django-debug-toolbar и добавьте в settings.py:

INSTALLED_APPS = ['debug_toolbar', ...]
MIDDLEWARE = ['debug_toolbar.middleware.DebugToolbarMiddleware', ...]
INTERNAL_IPS = ['127.0.0.1']

Для профайлинга используйте django-silk или встроенный cProfile.

15. Миграция на Django 5

Промт:

"Составь план миграции с Django 4 на Django 5. Укажи основные изменения и возможные проблемы."

Результат:

Согласно официальному руководству по переходу docs.djangoproject.com, ключевые изменения включают:
- Поддержка Python 3.10+;
- Новые возможности ORM (например, Q objects с |);
- Устаревшие функции, такие как django.utils.timezone.utc (используйте datetime.timezone.utc).

Итоги

Эти 15 промтов покрывают 90% рутинных задач Django-разработчика. Используйте их как отправную точку, но всегда проверяйте сгенерированный код и адаптируйте под свой проект. Нейросети — отличные помощники, но ответственность за качество кода лежит на вас. Подписывайтесь на наш блог, чтобы получать больше практических материалов по Python и Django!

← Все статьи

Комментарии

Читайте также

Первый промпт с GitHub Copilot: как правильно написать и получить максимум пользы

17 августа 2026

Сравниваем LLM: 12 тестов для китайских флагманов Kimi K3, GLM-5.2, DeepSeek V4 Pro и Qwen 3.8 Max

17 августа 2026

TypeScript в 2026 году: почему каждому JavaScript-разработчику нужна статическая типизация (обзор курса)

17 августа 2026

Cambridge International A-Level Physics (9702): Полный гид по курсу для будущих физиков

17 августа 2026

Как GitHub расширил защиту от вредоносных пакетов за пределы npm: новый рубеж безопасности

17 августа 2026

Автоматизация Wildberries с ASI Biont: интеграция ИИ-агента для успеха на маркетплейсе

17 августа 2026

Создание низколатентных многоязычных голосовых агентов: открытые веса и полный контроль развертывания с NVIDIA Magpie TTS

17 августа 2026

Курс делового английского: Освойте переговоры, презентации и глобальное общение с помощью ИИ

17 августа 2026

Женщина утверждает, что её отчим использовал Grok для превращения детских фото в откровенные изображения

17 августа 2026