路由器在 Django Rest Framework 中没有显示正确的 URL?

Router not displaying correct URL in Django RestFramework?

这就是我定义 urls.py 应用文件的方式


router = DefaultRouter()
router.register('hello-viewset', views.HelloViewSet, base_name='hello-viewset')
router.register('profiles', views.UserProfileViewSet)
router.register('schema', views.SchemaViewSet)
router.register('creddefination', views.CredDefViewSet)
router.register('overalltable', views.OverallViewSet)



urlpatterns = [

    path('', include(router.urls)),
]

urls.py 项目:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('DIAPI.urls')),

]

我没有得到正确的信用定义地址。但是当我手动转到 http://127.0.0.1:7000/api/creddefination/ 时,它正在工作。它只是没有正确显示。这可能是什么原因

我猜 views.CredDefViewSetviews.OverallViewSet 使用的是同一个模型。

如果这是真的,那么默认的 registerbasename 将以该模型命名,并在调用 Django 的 reverse url 构造时用作名称.由于 API 根视图将尝试解析具有相同名称的两个视图,因此它会导致相同的 url.

解决方法是向其中一个视图显式添加 basename

router.register('creddefination', views.CredDefViewSet, basename='creddeef')