После добавления django-debug в приложение, вы получите "djdt" не зарегистрированное пространство имен "

Мой вопрос о настройке для использования 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

Что я пробовал:

  • изменение порядка этих записей Middleware в settings.py (первый, средний и последний)
  • добавив атрибут пространства имен в мою запись urlpatterns

Спасибо за любые дальнейшие предложения.

5 ответов

Вам необходимо вручную добавить маршруты djdt в конец urls.py:

if settings.DEBUG:
    import debug_toolbar


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

Если эта проблема возникает, когда мы устанавливаем 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

Убедитесь, что в конце проекта urls.py указано следующее, а не приложение urls.py.

      if settings.DEBUG:
    import debug_toolbar

    urlpatterns += [
        path('__debug__/', include(debug_toolbar.urls)),
    ]

также не забудьте добавить следующее в settings.py

      if DEBUG:

    MIDDLEWARE += (
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    )
    INSTALLED_APPS += (
        'debug_toolbar',
    )
    INTERNAL_IPS = ('127.0.0.1',)
    DEBUG_TOOLBAR_CONFIG = {
        'INTERCEPT_REDIRECTS': False,
    }

Похоже, вы используете оба debug_toolbar а также debug_panelИ в документации на панель отладки упоминается, что вам нужно удалить debug_toolbar,

Замените промежуточное ПО панели отладки Django на панель отладки Django.

Заменить:

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

с:

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

Я бы порекомендовал не использовать django-debug-panel, так как она не поддерживается активно. Последнее изменение было 3 года назад.

Ошибка связана с тем, что мы объявляем ее середину, но модуль не импортируется в случае 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
Другие вопросы по тегам