После добавления 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