添加django-debug到App后,出现“'djdt'未注册的命名空间”错误。

10 浏览
0 Comments

添加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条目添加一个命名空间属性

感谢任何进一步的建议。

0
0 Comments

在将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',则会出现错误。

0
0 Comments

在将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

这样,问题就可以解决了。

0
0 Comments

在将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

0