将django-debug添加到App后,获取“'djdt'不是注册的名称空间”

时间:2018-08-23 12:01:11

标签: django django-debug-toolbar

我的问题是关于设置使用django-debug。 安装工具栏和面板并在我的应用程序中启用它们后,出现上述错误。我已经看到许多有关此问题或与之相关的问题的建议,但我尝试过的任何方法都无济于事。

在/usr/lib/python3.6/site-packages/debug_toolbar/templates/debug_toolbar/base.html的模板呈现期间,特定错误来自:

16       data-render-panel-url="{% url 'djdt:render_panel' %}"

我的相关settings.py条目:

DEBUG = True
INSTALLED_APPS = [
    'debug_toolbar',
    'debug_panel',
    ...
]
MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'debug_panel.middleware.DebugPanelMiddleware',
    ...
]
INTERNAL_IPS = ['127.0.0.1',]

附加到我的urls.py:

if settings.DEBUG:
    try:
        import debug_toolbar
        urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls))]
    except ImportError:
        pass

我尝试过的事情:

  • 更改settings.py(第一个,中间和最后一个)中这些中间件条目的顺序
  • 向我的urlpatterns条目添加名称空间属性

感谢您提出任何进一步的建议。

4 个答案:

答案 0 :(得分:1)

好像您同时使用debug_toolbardebug_paneldocumentation for debug面板中,提到您需要删除debug_toolbar

  

用Django Debug替换Django Debug Toolbar中间件   面板一。

替换:

MIDDLEWARE_CLASSES = (
    ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    ...
)

具有:

MIDDLEWARE_CLASSES = (
    ...
    'debug_panel.middleware.DebugPanelMiddleware',
    ...
)

我不建议使用django-debug-panel,因为它没有得到积极维护。最后修改是3年前。

答案 1 :(得分:0)

您需要手动将djdt路由添加到urls.py的末尾:

if settings.DEBUG:
    import debug_toolbar


urlpatterns += [
    url(r'^__debug__/', include(debug_toolbar.urls)),
]

答案 2 :(得分:0)

如果在将DEBUG设置为False时发生此问题,则只需从列表中删除debugtoolbar中间件即可解决该问题。

  • settings.py
MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    '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',
]

if DEBUG is False:
    del MIDDLEWARE[0]
  • urls.py
if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns

答案 3 :(得分:0)

该错误是由于我们声明了它的中间原因,但是如果DEBUG = FALSE,则不会导入该模块。因此,如果DEDEUG设置为TRUE,只需检查其中间即可添加

settings.py

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',
....
]

if DEBUG:
    
    MIDDLEWARE = ['debug_toolbar.middleware.DebugToolbarMiddleware'] + MIDDLEWARE

urls.py

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns