Встречается на собеседованиях • сегодня

Как сделать endpoint транзакции в Django

Для создания транзакционного endpoint в Django нужно использовать декоратор @transaction.atomic и Django REST Framework. Вот пример:

python
from django.db import transaction
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status

@api_view(['POST'])
@transaction.atomic
def create_transaction(request):
    try:
        # Бизнес-логика внутри транзакции
        perform_operation1()
        perform_operation2()
        
        return Response({'status': 'success'}, status=status.HTTP_201_CREATED)
    
    except Exception as e:
        # Транзакция автоматически откатится при исключении
        return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST)

Ключевые моменты:

  1. @transaction.atomic гарантирует атомарность операций
  2. При любом исключении произойдет автоматический откат
  3. Для API лучше использовать DRF декораторы
  4. Все операции БД внутри блока будут частью одной транзакции

Для класс-базированных вьюшек можно использовать @method_decorator(transaction.atomic) или наследовать от TransactionTestCase.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы