在Django RestFramework中,Router没有显示正确的URL?

问题描述 投票:0回答:1

我是这样定义我的应用程序的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')),

]

THis is my base API view我没有得到正确的 creddefination 地址。但当我手动进入 http:/127.0.0.1:7000apicreddefination。 它是工作的。只是不能正确显示。这可能是什么原因

django django-rest-framework django-views django-urls
1个回答
1
投票

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

如果这是真的,那么默认的 register's basename 将以该模型命名,并在调用Django的 reverse url构造。由于API Root视图会试图用相同的名称解析两个视图,所以会导致相同的url。

变通的方法是显式添加一个 basename 到其中的一个观点。

router.register('creddefination', views.CredDefViewSet, basename='creddeef')
© www.soinside.com 2019 - 2024. All rights reserved.