Маршрутизатор не отображает правильный URL в Django RestFramework? - PullRequest
0 голосов
/ 24 апреля 2020

Вот как я определил файл 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 Я не получил правильный адрес для определения. Но когда я вручную go до http://127.0.0.1: 7000 / api / creddefination / , это работает. Это просто не отображается правильно. Что может быть причиной этого

1 Ответ

1 голос
/ 24 апреля 2020

Полагаю, views.CredDefViewSet и views.OverallViewSet используют одну и ту же модель.

Если это правда, то по умолчанию register 's basename будет названо в честь этой модели и будет использоваться в качестве имени в вызов Django reverse url конструкции. Поскольку представление API Root будет пытаться разрешить оба представления с одним и тем же именем, это приведет к одному и тому же URL.

Обходной путь - явное добавление basename к одному из представлений:

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