Я пытаюсь создать обновленную версию вызова API.
urls.py
router.register(r'categories', views.CategoryViewSet)
router.register(r'categoriesv2', views.CategoryViewSetV2)
Однако, когда я запускаю внутренний сервер, автоматически сгенерированный корень api выглядит следующим образом:
"categories": "http://10.0.5.119:8000/api/**categoriesv2**/",
"categoriesv2": "http://10.0.5.119:8000/api/categoriesv2/",
Почему «категории» также указывают на / Categoriesv2 /, а не / Categories /? Любая помощь будет оценена, пожалуйста!






Синтаксис register согласно док имеет три параметра:
обязательные аргументы: prefix и viewset, которые вы уже указали
Необязательный аргумент: base_name
base_name - The base to use for the URL names that are created. If unset the basename will be automatically generated based on the queryset attribute of the viewset, if it has one. Note that if the viewset does not include a queryset attribute then you must set
base_namewhen registering the viewset.
Итак, лучший способ управлять версиями - создать альтернативный маршрутизатор, как показано ниже:
# Create a router and register our viewsets with it.
router = DefaultRouter()
router_v2 = DefaultRouter()
router.register(r'categories', views.CategoryViewSet)
router_v2.register(r'categories', views.CategoryViewSetV2)
# The API URLs are now determined automatically by the router.
urlpatterns = [
url(r'^api/', include(router.urls))
url(r'^api/v2/', include(router_v2.urls))
]
Большое спасибо!
Я не знаю, что такое
autogenerated api, но лучшее решение для новой версии API -api/v2/route