Skip to main content
 首页 » 编程设计

python之NoReverseMatch Django 休息框架

2025年05月04日37dflying

在 Django 中我有一个基于类的 View :

class ApiRoot(APIView): 
  def get(request, format=None): 
    return Response({ 
      'users': reverse('user-list', request=request, format=format), 
      #'snippets': reverse('snippet-list', request=request, format=format) 
    })   

以及 urls.py 中的以下 url 模式

urlpatterns = format_suffix_patterns([ 
    url(r'^$', views.ApiRoot.as_view(), name='api-root'), 
    url(r'^snippets/$', views.SnippetList.as_view(), name='snippet-list'), 
    url(r'^snippets/(?P<pk>[0-9]+)/$', views.SnippetDetail.as_view(), name='snippet-detail'), 
    url(r'^users/$', views.UserList.as_view(), name='user-list'), 
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view(), name='user-detail'), 
]) 
urlpatterns += [ 
    url(r'^api-auth/', include('rest_framework.urls', 
                           namespace='rest_framework')), 

我认为我已正确连接,但出现以下错误:

NoReverseMatch at / 
Reverse for 'user-list' with arguments '()' and keyword arguments '{u'format': <rest_framework.request.Request object at 0x7f99998c4c50>}' not found. 2 pattern(s) tried: [u'users\\.(?P<format>[a-z0-9]+)/?$', 'users/$'] 

知道为什么吗?

谢谢

请您参考如下方法:

您应该将 url 反转为 reverse('user-list')。那应该可以解决您的问题。