【问题标题】:NoReverseMatch while rendering the Django admin screen?NoReverseMatch 在渲染 Django 管理屏幕时?
【发布时间】: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',
 )

【问题讨论】:

    标签: django rendering


    【解决方案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',
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-14
          • 2020-02-10
          • 2017-06-06
          • 2014-10-14
          • 1970-01-01
          相关资源
          最近更新 更多