django rest 框架中的路径错误:不支持在 include() 中指定命名空间而不提供 app_name

Posted

技术标签:

【中文标题】django rest 框架中的路径错误:不支持在 include() 中指定命名空间而不提供 app_name【英文标题】:Path error in django rest framework : Specifying a namespace in include() without providing an app_name is not supported 【发布时间】:2020-05-19 23:18:47 【问题描述】:

在我的 django rest 框架应用程序中,我有 Urls.py 如下:

from django.urls import include, path
from .shipper import*
from .views import *


urlpatterns = [path('shipper/',
                    include(path('shipperitems/', MasterItemsList.as_view()),
                            path('shippercreateapi/', shipperCreateAPIView.as_view()),)),

               ]

当我尝试运行该应用程序时,它给了我以下错误:

django.core.exceptions.ImproperlyConfigured:在 不支持不提供 app_name 的 include()。设置 包含模块中的 app_name 属性,或传递 2 元组 而是包含模式列表和 app_name。

我应该怎么做才能解决这个问题?

【问题讨论】:

在学习djangorestframework时遇到同样的问题。似乎来自 rest_framework 的教程已经过时了。 django-rest-framework.org/tutorial/quickstart/#urls 【参考方案1】:

检查包含here 的文档。您应该传递参数以包含这样的内容

url(r'^reviews/', include('app_name.urls', 'app_name'), namespace='app_name')),

(credits)

【讨论】:

【参考方案2】:

您以错误的方式使用include(...) 函数。 include(...) 通常采用包含 url-patterns 的模块。所以改变你的代码如下,

#root urls.py
from django.urls import include, path

urlpatterns = [
    path('shipper/', include('shipper.urls'),
]

#/shipper/urls.py
urlpatterns = [
    path('shipperitems/', MasterItemsList.as_view()),
    path('shippercreateapi/', shipperCreateAPIView.as_view()),)),

]

【讨论】:

以上是关于django rest 框架中的路径错误:不支持在 include() 中指定命名空间而不提供 app_name的主要内容,如果未能解决你的问题,请参考以下文章

django rest框架:在视图中获取url路径变量

django.test.client 上的 Django rest 框架导入错误

从 django rest 框架中的序列化程序发送自定义错误响应?

django框架学习六:优化views.py文件,使用rest_framework中的APIVew和Response返回

Django REST 框架:使用 URL 中的 ID 发布到 URL

django rest框架使用jwt RS256解码签名错误