添加django-debug到App后,出现“'djdt'未注册的命名空间”错误。
添加django-debug到App后,出现“'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
我尝试过的方法:
- 在settings.py中更改这些中间件条目的顺序(首先、中间或最后)
- 向我的urlpatterns条目添加一个命名空间属性
感谢任何进一步的建议。
在将django-debug工具添加到应用程序后,出现了"'djdt' is not a registered namespace"的问题。这个问题的出现是因为在设置DEBUG为False时,从中间件列表中移除了debugtoolbar中间件,从而解决了问题。
解决方法如下:
1. 在settings.py文件中,找到MIDDLEWARE列表,并将'debug_toolbar.middleware.DebugToolbarMiddleware'移动到列表的第一个位置。
2. 如果DEBUG为False,从MIDDLEWARE列表中删除第一个元素。
代码示例:
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]
3. 在urls.py文件中,导入settings和include,并在DEBUG为True时,导入debug_toolbar模块,并将debug_toolbar.urls包含在urlpatterns列表中。
代码示例:
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
通过以上步骤的操作,我们可以解决"'djdt' is not a registered namespace"的问题。但是需要注意的是,如果MIDDLEWARE列表的第一个元素不是'debug_toolbar',则会出现错误。
在将django-debug添加到应用程序后,出现了“'djdt' is not a registered namespace”的错误。
该错误是由于我们在设置中声明了中间件,但在DEBUG = FALSE的情况下没有导入该模块。因此,只需检查在DEBUG设置为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
这样,问题就可以解决了。
在将django-debug工具添加到应用程序后,出现了"'djdt' is not a registered namespace"的错误。这个问题的出现原因是需要手动将'djdt'路由添加到urls.py文件的末尾(如果在应用程序中使用了'namespace',则将下面的代码添加到项目的urls.py文件中):
if settings.DEBUG: import debug_toolbar urlpatterns += [ url(r'^__debug__/', include(debug_toolbar.urls)), ]
请确保将其添加到项目的urls.py文件中,而不是应用程序的urls.py文件中。
现在稍有不同。详见django-debug-toolbar的官方文档(https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#setting-up-urlconf)。
原文链接:You need to manually add 'djdt' routes to the end of urls.py (if you use 'namespace' in your apps, add below codes to 'urls.py' in your project): if settings.DEBUG: import debug_toolbar urlpatterns += [ url(r'^__debug__/', include(debug_toolbar.urls)), ] Be sure to add it to the project urls.py file, NOT your application urls.py. It's slightly different now. See django-debug-toolbar.readthedocs.io/en/latest/installation.html#setting-up-urlconf