Nic*_*ale 5 django rest django-rest-framework
我有一个包含多个应用程序的项目。每个应用程序都有一个 urls.py。我指出了项目 urls.py 中的每一个。但是,所有网址都可以访问,但并非都显示在 DRF 中。
这是代码:
from django.conf.urls import url, include
from rest_framework import routers
from employees.urls import employees_router
from access.urls import access_router
router = routers.DefaultRouter()
#API ENDPOINTS
urlpatterns = [
url(r'^api/', include(employees_router.urls)),
url(r'^api/', include(access_router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
Run Code Online (Sandbox Code Playgroud)
问题是只有列出的第一个 URL 会显示 - 在这种情况下是员工。如果我将其注释掉,则 access_router url 将(用户和组)显示为单独的链接。为什么 rest_framework 的所有 URL 不会同时显示 - 以列表格式?
Django 从 url 模式的顶部开始,并在找到匹配项后立即停止。由于您有两个 url 使用相同的 regex '^api/',因此永远不会使用第二个包含。
或者,您不需要为每个应用程序配备一个路由器。您可以使用同一个路由器注册多个视图集:
from access.urls import AccessViewSet
from employees.urls import EmployeesViewSet
router = routers.DefaultRouter()
router.register(r'access', AccessViewSet)
router.register(r'employees', EmployeesViewSet)
Run Code Online (Sandbox Code Playgroud)
然后在您的 url 模式中包含默认路由器:
urlpatterns = [
url(r'^api/', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |