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

Cod*_*tle 20 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' %}"
Run Code Online (Sandbox Code Playgroud)

我的相关 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',]
Run Code Online (Sandbox Code Playgroud)

附加到我的 urls.py:

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

我试过的:

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

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

小智 24

您需要手动将“djdt”路由添加到 urls.py 的末尾(如果您在应用程序中使用“命名空间”,请将以下代码添加到您项目中的“urls.py”中):

if settings.DEBUG:
    import debug_toolbar

    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]
Run Code Online (Sandbox Code Playgroud)

  • 请务必将其添加到 *project* urls.py 文件,而不是您的应用程序 urls.py。 (11认同)
  • 现在情况略有不同。请参阅 https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#setting-up-urlconf (3认同)

Arb*_*ain 10

如果当我们设置为 时出现此问题,DEBUGFalse只需从列表中删除 debugtoolbar 中间件即可解决问题。

  • 设置.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]
Run Code Online (Sandbox Code Playgroud)
  • urls.py
from django.conf import settings
from django.conf.urls import include

...

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

  • 这没问题,但如果中间件的第一项不是“debug_toolbar”,则会出错。 (2认同)