路由器在 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.CredDefViewSet
和 views.OverallViewSet
使用的是同一个模型。
如果这是真的,那么默认的 register
的 basename
将以该模型命名,并在调用 Django 的 reverse
url 构造时用作名称.由于 API 根视图将尝试解析具有相同名称的两个视图,因此它会导致相同的 url.
解决方法是向其中一个视图显式添加 basename
:
router.register('creddefination', views.CredDefViewSet, basename='creddeef')
这就是我定义 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')),
]
我猜 views.CredDefViewSet
和 views.OverallViewSet
使用的是同一个模型。
如果这是真的,那么默认的 register
的 basename
将以该模型命名,并在调用 Django 的 reverse
url 构造时用作名称.由于 API 根视图将尝试解析具有相同名称的两个视图,因此它会导致相同的 url.
解决方法是向其中一个视图显式添加 basename
:
router.register('creddefination', views.CredDefViewSet, basename='creddeef')