1

(I have a custom user model)

I do not understand why this is happening. These are my expected urls:

python manage.py show_urls
/api/v1/        rest_framework.routers.APIRootView      api-root
/api/v1/\.<format>/     rest_framework.routers.APIRootView      api-root
/api/v1/users/  users.views.UserCreateViewSet   user-list
/api/v1/users/<pk>/     users.views.UserViewSet user-detail
/api/v1/users/<pk>\.<format>/   users.views.UserViewSet user-detail
/api/v1/users\.<format>/        users.views.UserCreateViewSet   user-list

As soon as I include in my urls.py a view based on DynamicModelViewSet:

from dynamic_rest.viewsets import DynamicModelViewSet


class AggregateViewSet(DynamicModelViewSet):
    pass

My user-list urls are duplicated:

ยป python manage.py show_urls
/api/v1/        rest_framework.routers.APIRootView      api-root
/api/v1/\.<format>/     rest_framework.routers.APIRootView      api-root
/api/v1/users/  users.views.UserCreateViewSet   user-list
/api/v1/users/  users.views.UserViewSet user-list
/api/v1/users/<pk>/     users.views.UserViewSet user-detail
/api/v1/users/<pk>\.<format>/   users.views.UserViewSet user-detail
/api/v1/users\.<format>/        users.views.UserCreateViewSet   user-list
/api/v1/users\.<format>/        users.views.UserViewSet user-list

This is my (simplified) urls.py:

from django.urls include
from rest_framework.routers import DefaultRouter

# from consumption.views import AggregateViewSet

router = DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'users', UserCreateViewSet)

urlpatterns = [
    path('api/v1/', include(router.urls)),
]

Activating that from consumption.views import AggregateViewSet statement makes the problem appear. It does not even need to be registered to the router: just importing the view is breaking the urls.

Why is dynamic-rest mangling the urls just by being imported?

blueFast
  • 41,341
  • 63
  • 198
  • 344

0 Answers0