django.url.exceptions.NoReverseMatch:与#x27相反;用户列表';没有找到';用户列表';不是有效的视图函数或模式名称
教程5:关系和超链接API错误 教程链接地址为: 我尝试了与查询相关的解决方案,在stackoverflow上遇到了类似的问题,但经过测试,我仍然无法使用它们 views.pydjango.url.exceptions.NoReverseMatch:与#x27相反;用户列表';没有找到';用户列表';不是有效的视图函数或模式名称,django,django-rest-framework,Django,Django Rest Framework,教程5:关系和超链接API错误 教程链接地址为: 我尝试了与查询相关的解决方案,在stackoverflow上遇到了类似的问题,但经过测试,我仍然无法使用它们 views.py class SnippetList(generics.ListCreateAPIView): queryset = Snippet.objects.all() serializer_class = SnippetSerializer permission_classes = (permission
class SnippetList(generics.ListCreateAPIView):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class SnippetDetail(generics.RetrieveDestroyAPIView):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly)
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
@api_view(['GET'])
def api_root(request, format=None):
return Response({
'users': reverse('user-list', request=request, format=format),
'snippets': reverse('snippet-list', request=request, format=format),
})
class SnippetHighlight(generics.GenericAPIView):
queryset = Snippet.objects.all()
renderer_classes = [renderers.StaticHTMLRenderer]
def get(self, request, *args, **kwargs):
snippet = self.get_object()
return Response(snippet.highlighted)
url.py
urlpatterns = format_suffix_patterns([
path('', views.api_root),
path('snippets/', views.SnippetList.as_view(), name='snippet-list'),
path('snippets/<int:pk>/', views.SnippetDetail.as_view(), name='snippet-detail'),
path('snippets/<int:pk>/highlight/', views.SnippetHighlight.as_view(), name='snippet-highlight'),
path('users/', views.UserList.as_view(), name='user-list'),
path('users/<int:pk>/', views.UserDetail.as_view(), name='user-detail'),
])
urlpatterns += [
path(r'api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
回溯错误:
Traceback:
File "C:\Anaconda3\envs\python36\lib\site-packages\django\core\handlers\exception.py" in inner 34. response = get_response(request)
File "C:\Anaconda3\envs\python36\lib\site-packages\django\core\handlers\base.py" in _get_response 126. response = self.process_exception_by_middleware(e, request)
File "C:\Anaconda3\envs\python36\lib\site-packages\django\core\handlers\base.py" in _get_response 124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Anaconda3\envs\python36\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view 54. return view_func(*args, **kwargs)
File "C:\Anaconda3\envs\python36\lib\site-packages\django\views\generic\base.py" in view 68. return self.dispatch(request, *args, **kwargs)
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\views.py" in dispatch 505. response = self.handle_exception(exc)
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\views.py" in handle_exception 465. self.raise_uncaught_exception(exc)
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\views.py" in raise_uncaught_exception 476. raise exc
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\views.py" in dispatch 502. response = handler(request, *args, **kwargs)
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\decorators.py" in handler 50. return func(*args, **kwargs)
File "C:\Users\Ze Ran Lu\Desktop\swie\text\tutorials\snippets\views.py" in api_root 205. 'users': reverse('user-list'),
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\reverse.py" in reverse 47. url = _reverse(viewname, args, kwargs, request, format, **extra)
File "C:\Anaconda3\envs\python36\lib\site-packages\rest_framework\reverse.py" in _reverse 60. url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
File "C:\Anaconda3\envs\python36\lib\site-packages\django\urls\base.py" in reverse 90. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:\Anaconda3\envs\python36\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix 622. raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at / Exception Value: Reverse for 'user-list' not found. 'user-list' is not a valid view function or pattern name.
反向仅接受以下参数: 反向(viewname,urlconf=None,args=None,kwargs=None, 当前(应用程序=无) 而且您的
用户/
不接受任何参数,因此您只需要反向使用url名称
reverse('user-list')
内部服务器错误:/
回溯(最近一次呼叫最后一次):
文件“C:\Anaconda3\envs\python36\lib\site packages\django\core\handlers\exception.py”,第34行,在内部
响应=获取响应(请求)
文件“C:\Anaconda3\envs\python36\lib\site packages\django\core\handlers\base.py”,第126行,在get响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“C:\Anaconda3\envs\python36\lib\site packages\django\core\handlers\base.py”,第124行,在get响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“C:\Anaconda3\envs\python36\lib\site packages\django\views\decorators\csrf.py”,第54行,在包装视图中
返回视图函数(*args,**kwargs)
文件“C:\Anaconda3\envs\python36\lib\site packages\django\views\generic\base.py”,第68行,在视图中
返回自调度(请求,*args,**kwargs)
文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\views.py”,第505行,在分派中
响应=自身处理异常(exc)
句柄异常中的文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\views.py”,第465行
自举未捕获异常(exc)
文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\views.py”,第476行,在raise\u uncaught\u异常中
加薪
文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\views.py”,第502行,在分派中
响应=处理程序(请求、*args、**kwargs)
处理程序中第50行的文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\decorators.py”
返回函数(*args,**kwargs)
文件“C:\Users\Ze-Ran-Lu\Desktop\swie\text\tutorials\snippets\views.py”,第205行,在api\u根目录中
“用户”:反向(“用户列表”),
文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\reverse.py”,第47行,格式相反
url=_反向(视图名称、参数、kwargs、请求、格式,**额外)
文件“C:\Anaconda3\envs\python36\lib\site packages\rest\u framework\reverse.py”,第60行,反向
url=django_反向(视图名称,args=args,kwargs=kwargs,**额外)
文件“C:\Anaconda3\envs\python36\lib\site packages\django\url\base.py”,第90行,相反
将iri_返回到_uri(解析器。_使用_前缀反向_(视图,前缀,*args,**kwargs))
文件“C:\Anaconda3\envs\python36\lib\site packages\django\url\resolvers.py”,第622行,在带有前缀的\u reverse\u中
提升NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch:找不到“用户列表”的反向“用户列表”不是有效的视图函数或模式名称。
另一个url.py文件是
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('snippets.urls'))
]
项目结构
教程
|_片段
||_url.py
||_views.py
||_models.py
||_apps.py
|||u admin.py
|_教程
|_url.py
|_设置.py
|_wsgi.py根据您提供的方法修改后,仍然会报告相同的错误@api_view(['GET'])def api_root(request,format=None):返回响应({'users':reverse('user-list'),'snippets':reverse('snippet-list'),})django.url.exceptions.NoReverseMatch:reverse for'user list'未找到'“用户列表”不是有效的视图函数或模式名称如果是,那么您可以发布得到的完整回溯错误吗?可能有助于指出错误来自模板或视图完整的回溯太长,我在下面添加了一个答案模块版本为Django 2.1 djangorestframework 3.10.3@hewm是否有其他URL.py文件作为根文件并在文件s上使用include?
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('snippets.urls'))
]