我在网站的主页上收到此错误:
> 的NoReverseMatch使用参数'()'和找不到关键字参数'{}来反转'admin'。尝试了0种模式:[]。
这是我的urls.py:
from django.conf.urls import url
from django.contrib import admin
from rest_framework.urlpatterns import format_suffix_patterns
from rest_framework import routers
from . import views
router = routers.SimpleRouter()
router.register(r'queue', views.QueueItemViewSet)
router.register(r'label', views.EventLabelViewSet)
urlpatterns = router.urls
urlpatterns += [
url(r'^$', views.api_root),
url(r'^fingerprint/submit/$', views.FingerprintSubmit.as_view(),
name="fingerprint-submit"),
url(r'^fingerprint/rebuild/$', views.RebuildFingerprints.as_view(),
name="fingerprint-rebuild"),
url(r'^admin/', admin.site.urls, name="admin"),
]
urlpatterns = format_suffix_patterns(urlpatterns)
这是令人讨厌的views.py片段:
@api_view(['GET'])
def api_root(request, format=None):
"""
Home page of the API
"""
return Response({
'admin': reverse('admin', request=request, format=format)})
最后,追溯:
Environment:
Request Method: GET
Request URL: http://128.31.25.88:8000/
Django Version: 1.10.5
Python Version: 3.4.3
Installed Applications:
['deltasherlock_server.apps.DeltasherlockServerConfig',
'rest_framework',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/views/decorators/csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/rest_framework/views.py" in dispatch
477. response = self.handle_exception(exc)
File "/usr/local/lib/python3.4/dist-packages/rest_framework/views.py" in handle_exception
437. self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.4/dist-packages/rest_framework/views.py" in dispatch
474. response = handler(request, *args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/rest_framework/decorators.py" in handler
52. return func(*args, **kwargs)
File "/home/ubuntu/django-server/deltasherlock_server/views.py" in api_root
29. 'admin': reverse('admin', request=request, format=format),
File "/usr/local/lib/python3.4/dist-packages/rest_framework/reverse.py" in reverse
50. url = _reverse(viewname, args, kwargs, request, format, **extra)
File "/usr/local/lib/python3.4/dist-packages/rest_framework/reverse.py" in _reverse
63. url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
File "/usr/local/lib/python3.4/dist-packages/django/urls/base.py" in reverse
91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/usr/local/lib/python3.4/dist-packages/django/urls/resolvers.py" in _reverse_with_prefix
392. (lookup_view_s, args, kwargs, len(patterns), patterns)
Exception Type: NoReverseMatch at /
Exception Value: Reverse for 'admin' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
我查看了其他帖子,但没有发现任何有用的信息,我刚加入这个项目,所以我不知道原来程序员在这里尝试做什么。
答案 0 :(得分:2)
admin.site.urls
不是视图,它是URL配置文件,其URL名称空间为admin
。它有点不同,因为你不应该使用include()
,但是在其他方面它就像包含不同的URLconf一样。
由于它是一个包含,name
参数绝对没有效果。
要反转管理员的主页面,请使用:
return Response({
'admin': reverse('admin:index', request=request, format=format),
})
可以找到管理员网址的完整列表in the docs。