本质上,取决于我将我的路由添加到我的urlpatterns中的顺序,可浏览的API一次只显示一个路由器。这是我的密码:
urls.py:
from django.conf.urls import url, include
from rest_framework import routers
from .views import PlantViewSet
# url router
router = routers.DefaultRouter()
router.register(r'plants', PlantViewSet, base_name='Plants')
djoser_urls = [url(r'^', include('djoser.urls')), ]
urlpatterns = [
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^docs/', include('rest_framework_swagger.urls')),
# url(r'^', include(router.urls)),
# url(r'^', include('djoser.urls')),
] + djoser_urls + router.urls这只显示djoser urls:

但是,只需颠倒我添加urls的顺序:
urls.py:
from django.conf.urls import url, include
from rest_framework import routers
from .views import PlantViewSet
# url router
router = routers.DefaultRouter()
router.register(r'plants', PlantViewSet, base_name='Plants')
djoser_urls = [url(r'^', include('djoser.urls')), ]
urlpatterns = [
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^docs/', include('rest_framework_swagger.urls')),
# url(r'^', include(router.urls)),
# url(r'^', include('djoser.urls')),
] + router.urls + djoser_urls这只显示router urls!

当我只使用我注释掉的include()行时,也会发生同样的情况,列表中的第一行是唯一显示的路由器。此外,无论哪个路由器被选中,api-auth/和docs/ urls都不会显示。是否有一个统一的api根,而不必创建我自己的自定义视图?
发布于 2015-05-04 00:17:57
这与Django REST框架没有任何关系,因为Django是如何处理重复urls的。
您正在尝试使用两个不同的视图来处理单个url : DRF路由器索引和djoser根视图。Django将只显示与它找到的搜索模式相匹配的第一个视图,这通常是包含在url模式中的第一个url。
Django REST框架也不会检测到可用的多个路由器并将它们组合在同一个页面上,这听起来像是您希望看到的。即使可以,djoser不使用路由器因此也不可能真正知道包括它。
是否有一个统一的api根,而不必创建我自己的自定义视图?
因此,要回答主要问题:不,Django REST框架不可能自动将这些视图组合在一起。您需要创建自己的customer视图来处理这个问题。
https://stackoverflow.com/questions/30020723
复制相似问题