多应用的Django Rest Framework URL映射

4
我有一个 Django-rest 项目叫做 main,并在其中创建了一个名为 users 的应用程序。因此,我的项目有以下文件:

main/main/urls.py

main/users/urls.py

在 users/urls.py 中,我有以下内容:

from django.conf.urls import url, include
from rest_framework import routers
from users import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)

在主/main/urls.py文件中,我有以下内容:

from django.conf.urls import url
from django.contrib import admin

from users import urls

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/', users.urls),
]

然而,我一直遇到错误NameError: name 'users' is not defined。当我有多个应用程序时,设置URL的正确方法是什么?我希望每个应用程序都有一个独立于项目的urls.py文件。在根urls.py中包含对不同应用程序的路由。

1个回答

6

你导入的是URL而不是用户,可以尝试一下

from users import urls as users_url
#                        ^^^^^^^^

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/', users_url),
    #               ^^^^^^^
]

但更好的方式是:
from django.conf.urls import url, include

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/', include('users.url')),
    #               ^^^^^^^
]

更多细节请见包含其他URL配置

3
或者,另一种方法是 import usersurl(r'^users/', users.urls) - Mad Wombat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接