Django rest框架:即使已定义模式名,也会出现NoReverseMatch错误
我已经在我的views.py中创建了一个api_根目录Django rest框架:即使已定义模式名,也会出现NoReverseMatch错误,django,django-rest-framework,Django,Django Rest Framework,我已经在我的views.py中创建了一个api_根目录 @api_view(['GET']) def api_root(request, format=None): return Response({ 'books': reverse('api_book_list'), 'users': reverse('api_user_list') }) 我的rest_api.url.py引用了它 urlpatterns = [ url(r'', api_root), url(
@api_view(['GET'])
def api_root(request, format=None):
return Response({
'books': reverse('api_book_list'),
'users': reverse('api_user_list')
})
我的rest_api.url.py引用了它
urlpatterns = [
url(r'', api_root),
url(r'^books/$', BookList.as_view(), name='api_book_list'),
url(r'^books/(?P<pk>[0-9]+)/$', BookDetail.as_view(), name='book-detail'),
url(r'^users/$', UserList.as_view(), name='api_user_list'),
url(r'^users/(?P<pk>[0-9]+)/$', UserDetail.as_view(), name='user-detail'),
]
然而,当我访问/api/v1/页面时,我得到以下错误:
NoReverseMatch at /api/v1/
Reverse for 'api_book_list' not found. 'api_book_list' is not a valid view
function or pattern name.
但是我已经在我的url.py中定义了模式名,有人知道为什么Django仍然无法识别它吗?您已经在根url中定义了namespace='api'
,所以您需要在url名之前追加api
,然后进行反向操作
阅读官方文件:
NoReverseMatch at /api/v1/
Reverse for 'api_book_list' not found. 'api_book_list' is not a valid view
function or pattern name.
reverse('api:api_book_list')
reverse('api:api_user_list')