django2 中带有 router.urls 的命名空间
namespace with router.urls in django2
在 django2.1.5 和 DRF 3.9.1 中,我试图添加不起作用的 router.urls 命名空间。
path('api/v2/', include(router.urls, namespace="v2"))
我终端的错误是
"在不提供 app_name 的情况下在 include() 中指定命名空间 '
django.core.exceptions.ImproperlyConfigured:不支持在不提供 app_name 的情况下在 include() 中指定命名空间。在包含的模块中设置 app_name 属性,或者传递一个包含模式列表的二元组,而不是 app_name
我找不到任何合适的解决方案,因为我为命名空间设置了 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(),
姓名='course_detail'),
路径('/评论/',views.ListCreateReview.as_view(),名称='review_list'),
路径('/评论/',views.RetrieveUpdateDestroyReview.as_view(),名称='review_detail'),
]
这是我要编写的代码。
reviews = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='v2:review-detail'
)
我想使用命名空间 v2 访问 review_detail。
谢谢。
你这样试试,
urlpatterns = [
url(r'^api/', include((router.urls, 'app_name'), namespace='instance_name')),
]
在 include 中你不能添加命名空间。按照上面的方法。如果您有任何疑问,请参阅此 https://www.django-rest-framework.org/api-guide/routers/
在 django2.1.5 和 DRF 3.9.1 中,我试图添加不起作用的 router.urls 命名空间。
path('api/v2/', include(router.urls, namespace="v2"))
我终端的错误是
"在不提供 app_name 的情况下在 include() 中指定命名空间 ' django.core.exceptions.ImproperlyConfigured:不支持在不提供 app_name 的情况下在 include() 中指定命名空间。在包含的模块中设置 app_name 属性,或者传递一个包含模式列表的二元组,而不是 app_name
我找不到任何合适的解决方案,因为我为命名空间设置了 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(),
姓名='course_detail'), 路径('/评论/',views.ListCreateReview.as_view(),名称='review_list'), 路径('/评论/',views.RetrieveUpdateDestroyReview.as_view(),名称='review_detail'), ]
这是我要编写的代码。
reviews = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='v2:review-detail'
)
我想使用命名空间 v2 访问 review_detail。 谢谢。
你这样试试,
urlpatterns = [
url(r'^api/', include((router.urls, 'app_name'), namespace='instance_name')),
]
在 include 中你不能添加命名空间。按照上面的方法。如果您有任何疑问,请参阅此 https://www.django-rest-framework.org/api-guide/routers/