DRF, почему мои корневые api урлы смешиваются (объединяются)?
Вот мои фрагменты кода:
# serializers.py
from rest_framework import serializers
from .models import User
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = '__all__'
class UserActivitySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = (
'id',
'email',
'last_login',
'last_requested_at',
)
# urls.py
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'user-activity', UserActivityViewSet)
urlpatterns = [
path('', include(router.urls)),
]
Это приводит к комбинированным урлам Root API, например:
Однако это не является ожидаемым поведением. Я хотел получить 2 отдельных урла. Первый со всеми пользователями (например, localhost:8000/users со всеми пользователями и localhost:8000/users/ для конкретного пользователя). И второй с API user activity с этими 4 полями. Я не понимаю, почему мои урлы объединились, когда я добавил router.register(r'user-activity', UserActivityViewSet)
в мой urls.py. Пожалуйста, помогите с широким объяснением, если это возможно. Спасибо!
Попробуйте указать basename
маршрутам следующее:
# urls.py
router = routers.DefaultRouter()
router.register(r'users', UserViewSet, basename="users")
router.register(r'user-activity', UserActivityViewSet, basename="user-activity")
urlpatterns = [
path("", include(router.urls)),
]
PS.: Некоторые версии DRF называют это base_name