Skip to main content
 首页 » 编程设计

python之Django REST 嵌套路由器

2024年10月17日32del

我是 Django 和 Django REST 的新手。

尝试为每个应用程序使用嵌套路由器来实现推荐的路由方案。

例子:

mysite.url.py:

urlpatterns = [ 
    url(r'^'+root_url+'/tinymce/', include('tinymce.urls')), 
    url(r'^'+root_url+'/admin/', admin.site.urls), 
    url(r'^'+root_url+'/swagger', swagger_schema_view), 
    url(r'^'+root_url+'/', include('blog.urls')), 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

blog.urls.py:

from rest_framework import routers 
from . import views 
 
router = routers.DefaultRouter() 
router.register(r'^/blog', views.PostViewSet) 
router.register(r'^/users', views.UserViewSet) 

获取异常:

django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 'blog.urls' from 'C:\\Users\\user11\\PycharmProjects\\api_v2\\blog\\urls.py'>' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import. 

请您参考如下方法:

尽管您使用 router 进行 url 映射,您仍然需要一个 urlpatterns 列表。

router = routers.DefaultRouter() 
router.register(r'^/blog', views.PostViewSet) 
router.register(r'^/users', views.UserViewSet) 
 
urlpatterns = router.urls 

你也可以省略路由器 url 中的任何正则表达式符号:

router.register(r'blog', views.PostViewSet) 
router.register(r'users', views.UserViewSet)