NoReverseMatch 在渲染 Django 管理屏幕时?
Posted
技术标签:
【中文标题】NoReverseMatch 在渲染 Django 管理屏幕时?【英文标题】:NoReverseMatch while rendering the Django admin screen? 【发布时间】:2011-08-18 22:05:21 【问题描述】:运行 Python 2.5 Django 1.2.4
测试基本设置时出现错误消息。第一次在浏览器中输入 /admin URL 时,我收到错误消息:
在模板 c:\dd\ddproject\src\templates\admin\base_site.html 中,第 10 行出错
渲染时捕获 NoReverseMatch:“django.contrib.auth.views.logout”的反向参数“()”和关键字参数“”未找到。
异常位置:C:\Python25\lib\site-packages\django\template\defaulttags.py 在渲染中,第 385 行
这是第 10 行的代码
<a href="% url django.contrib.auth.views.logout %">% trans 'Log out' %</a>
我不愿意包含我的整个 settings.py
文件。但要回答您的下一个问题,以下是相关设置:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'src.urls'
TEMPLATE_DIRS = (
"/dd/ddproject/src/templates",
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.admindocs',
)
【问题讨论】:
【参考方案1】:如果您在没有提示的情况下将settings.py
包含在您的问题中,那么您就不能成为新手 :-)
如果您没有定义自己的登录/注销网址,请记住在您的 urls.py
文件中包含 auth
网址。最好最后这样做:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
# ... other URL defs and includes here ....
(r'', include('django.contrib.auth.urls')),
)
【讨论】:
谢谢,杰瑞特。不,我的 url 配置中没有 auth url。我已经定义了一个 r'' 正则表达式以将我带到我的问候屏幕(我认为它就像输入的任何没有匹配正则表达式的 url 的通配符。)你是说我可以定义 2 个 url在带有 r'' 正则表达式的 urls.py 中? 您建议的修复方法奏效了,Jarret。我现在也看到了 r' ' 正则表达式是什么。让我从 'django.contrib.auth.urls' 中提取更多 url 谢谢!【参考方案2】:需要在urls.py中添加:
#Session management
(r'^login/$','django.contrib.auth.views.login'),
或者你正在使用
(r'^admin$',include(admin.site.urls)),
(r'^admin/$',include(admin.site.urls)),
而不是:
(r'^admin',include(admin.site.urls)),
【讨论】:
【参考方案3】:我将此行添加到我的 urls.py 并解决了问题:
url('', include('django.contrib.auth.urls')),
我正在使用 Django 1.5
【讨论】:
【参考方案4】:解决这个问题的方法是在 settings.py 的 INSTALLED_APPS 中使用绝对路径。所以:
'myproject.myapp',
而不是
'myapp',
【讨论】:
以上是关于NoReverseMatch 在渲染 Django 管理屏幕时?的主要内容,如果未能解决你的问题,请参考以下文章
渲染时 NoReverseMatch:“django.contrib.auth.views.login”的反向
在 Django 中使用 % url % 时的 NoReverseMatch
如何修复 NoReverseMatch Django 错误?