django2中带有router.urls的命名空间

Posted

技术标签:

【中文标题】django2中带有router.urls的命名空间【英文标题】:namespace with router.urls in django2 【发布时间】:2019-07-01 03:02:21 【问题描述】:

在 django2.1.5 和 DRF 3.9.1 中,我正在尝试添加不起作用的 router.urls 命名空间。

path('api/v2/', include(router.urls, namespace="v2"))

我的终端中的错误是

"在 include() 中指定命名空间而不提供 app_name ' django.core.exceptions.ImproperlyConfigured:不支持在 include() 中指定命名空间而不提供 app_name。在包含的模块中设置 app_name 属性,或者传递一个包含模式列表和 app_name 的 2 元组"

当我为命名空间设置 app_name 时,我找不到任何合适的解决方案。如何在 router.urls 上使用命名空间,或者在 Django 2 版本中无法使用它?

尝试添加 app_name 但它不能解决我的问题

这是我的代码。

config.urls.py

from django.urls import path, include
from django.contrib import admin

from rest_framework import routers

from project.courses import views

router = routers.SimpleRouter()
router.register(r'courses', views.CourseViewSet)
router.register(r'reviews', views.ReviewViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-auth/', include('rest_framework.urls')),
    path('api/v1/courses/', include('project.courses.urls', namespace='courses')),
    path('api/v2/', include(router.urls, namespace="v2")),
]

courses.urls.py

from django.urls import path
from . import views

app_name = 'project.courses'
urlpatterns = [
    path('', views.ListCreateCourse.as_view(), name='course_list'),
    path('<int:pk>', views.RetrieveUpdateDestroyCourse.as_view(), 

name='course_detail'), path('/reviews/', views.ListCreateReview.as_view(), name='review_list'), path('/reviews/', views.RetrieveUpdateDestroyReview.as_view(), name='review_detail'), ]

这是我要写的代码。

reviews = serializers.HyperlinkedRelatedField(
    many=True, 
    read_only=True,
    view_name='v2:review-detail'
    )

我想使用命名空间 v2 访问 review_detail。 谢谢。

【问题讨论】:

【参考方案1】:

你试试这样,

urlpatterns = [
    url(r'^api/', include((router.urls, 'app_name'), namespace='instance_name')),
]

在包含中您不能添加命名空间。按照上面的方法。如果您有任何疑问,请参考此https://www.django-rest-framework.org/api-guide/routers/

【讨论】:

谢谢,Sakthi Panneerselvam。它就像一个魅力。 如果解决方案有效,请投票以使其对全局正确 我的声望只有 13。当我的声望达到 15 时,我肯定会支持它。由于声誉较低,我现在不会投票。 好的。一旦声望提高了,就去做这件事,因为这个答案对其他人也有用。 当然。我将会。我搜索了这个,几个小时,最后,我在这里问。所以我肯定会赞成这个答案。再次感谢

以上是关于django2中带有router.urls的命名空间的主要内容,如果未能解决你的问题,请参考以下文章

Java中带有命名空间的XPath

Hibernate中带有命名查询的可选参数?

Weka 中带有测试数据的空混淆矩阵

Perl 中带有输出参数的子例程的最佳实践命名约定

yum repo 的 url 中带有 cntlm 代理和基本身份验证参数的空服务器响应

c中带有无符号字符的空指针