Зачем нужен декоратор @action
Python
Junior
Без компании
Зачем нужен декоратор @action
Ответы
Декоратор `@action` используется в Django REST Framework для добавления кастомных эндпоинтов к ViewSet. Он позволяет расширить стандартные CRUD-операции (list, create, retrieve и т.д.) дополнительными действиями.
Пример:
```
from rest_framework.decorators import action
from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet):
@action(detail=True, methods=['post'])
def activate(self, request, pk=None):
user = self.get_object()
user.is_active = True
user.save()
return Response({'status': 'activated'})
```
Ключевые особенности:
- `detail=True` - действие применяется к конкретному объекту
- `methods` - указывает HTTP-методы для эндпоинта
- URL по умолчанию: `/{model_name}/{pk}/{action_name}/`
- Можно переопределить URL через параметр `url_path`