5

更新到 Django 1.4 后尝试访问我的管理面板时出现此错误 - 错误是:

NoReverseMatch at /admin/
Reverse for 'logout' with arguments '()' and keyword arguments '{}' not found.

我最好的猜测是我正在定义一个注销 urlpattern,它在某种程度上与管理面板试图创建的那个冲突?虽然,它应该创建/admin/logout,对吧?我确实将我的 ADMIN_MEDIA_PREFIX 更新为 STATIC_URL 并将它们移动到一个名为 admin 的子文件夹中,但这似乎并没有什么不同。

在我的 urls.py 中,我有:

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    ...
    ('^logout/$',  RedirectView.as_view(url='/login/index.html')),
    (r'^login/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/fullpath/to/media/login'}),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/fullpath/to/media/static'}),
    (r'^admin/(.*)', include(admin.site.urls)),
)

在我的 settings.py 中,我有:

STATIC_ROOT = '/fullpath/to/myapp/media/static/'
STATIC_URL = '/static/'

INSTALLED_APPS = (
    'django.contrib.auth',
     ...
    'django.contrib.admin',
)
4

1 回答 1

11
(r'^admin/(.*)', include(admin.site.urls)),

应该

(r'^admin/', include(admin.site.urls)),

(.*) 会吃掉 admin 作为视图参数之后的所有内容。

另外,你知道什么叫reverse('logout')吗?在我的本地 1.4 安装中,管理员是命名空间的,我必须调用reverse('admin:logout')

于 2012-04-13T18:09:07.333 回答