多个应用程序的 Django Rest Framework URL 映射

swd*_*don 4 django django-rest-framework

我有一个名为 django-rest 的项目main,在它下我创建了一个名为 的应用程序users。所以,我的项目有这些文件:-

主/主/urls.py

主/用户/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)
Run Code Online (Sandbox Code Playgroud)

在 main/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),
]
Run Code Online (Sandbox Code Playgroud)

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

小智 6

你导入的是url而不是user,可以尝试一下

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/', users_url),
    #               ^^^^^^^
]
Run Code Online (Sandbox Code Playgroud)

但更好的是:

from django.conf.urls import url, include

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^users/', include('users.url')),
    #               ^^^^^^^
]
Run Code Online (Sandbox Code Playgroud)

更多详细信息,包括-other-urlconfs

  • 或者,“导入用户”和“url(r'^users/', users.urls)” (3认同)