Какие знаешь способы роутинга в DRF
Python
Senior
Без компании
Какие знаешь способы роутинга в DRF
Ответы
В Django REST Framework (DRF) есть несколько способов роутинга:
- **Ручной роутинг через `urlpatterns`**
Прописываем URL-пути вручную в `urls.py`:
```
from django.urls import path
from .views import MyView
urlpatterns = [
path('api/myview/', MyView.as_view()),
]
```
- **`DefaultRouter`**
Автоматически генерирует URL для ViewSets:
```
from rest_framework.routers import DefaultRouter
from .views import MyViewSet
router = DefaultRouter()
router.register('myview', MyViewSet)
urlpatterns = router.urls
```
- **`SimpleRouter`**
Упрощённая версия `DefaultRouter` без дополнительных URL (например, `.json`).
- **`@action` декоратор**
Добавляет кастомные эндпоинты к ViewSet:
```
class MyViewSet(viewsets.ModelViewSet):
@action(detail=True, methods=['post'])
def custom_action(self, request, pk=None):
...
```
- **Сторонние библиотеки**
Например, `drf-nested-routers` для вложенных роутов.
Выбор зависит от сложности API: для простых проектов хватит ручного роутинга, для RESTful API удобнее `DefaultRouter`.