Django 1.10和中间件

Trt*_*rts 5 django-middleware

再一次:Django 1.10.

新的中间件风格.在我们的文档中:

https://docs.djangoproject.com/en/1.10/releases/1.10/#new-style-middleware

https://docs.djangoproject.com/en/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware

我需要Django调试工具栏.1.5版与Django 1.10兼容.

这是安装文档:https://django-debug-toolbar.readthedocs.io/en/stable/installation.html

Django调试工具栏需要:

MIDDLEWARE_CLASSES = [
    # ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    # ...
] 
Run Code Online (Sandbox Code Playgroud)

好吧,我试图将'debug_toolbar.middleware.DebugToolbarMiddleware'添加到现有的MIDDLEWARE.没有成功(服务器不运行,一些异常上升).

然后我将MIDDLEWARE重命名为MIDDLEWARE_CLASSES.工作.

困扰我的是:我在文档中找不到支持MIDDLEWARE_CLASSES的内容.一切正常.

你能给我一些建议:是否可以使用MIDDLEWARE_CLASSES设置?在哪里阅读这个.

小智 0

由于Django 1.10引入了新的中间件风格,现有的中间件应该更新。 https://github.com/jazzband/django-debug-toolbar/issues/853

您的文件应包含类似于以下内容的内容:

prj/prj/settings.py

# { django-debug-toolbar
DEBUG_TOOLBAR_PATCH_SETTINGS = False
INTERNAL_IPS = ['127.0.0.1', ]
if DEBUG:
    # MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware',]
    MIDDLEWARE += ['test_app.crutch.AdaptedTo110DebugMiddleware',]
    INSTALLED_APPS += ['debug_toolbar',]
# } django-debug-toolbar
Run Code Online (Sandbox Code Playgroud)

prj/prj/urls.py

from django.conf import settings # for django-debug-toolbar
# { django-debug-toolbar
if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]
# } django-debug-toolbar
Run Code Online (Sandbox Code Playgroud)

prj/test_app/crutch.py

# a crutch for the debugger
from django.utils.deprecation import MiddlewareMixin
from debug_toolbar.middleware import DebugToolbarMiddleware


class AdaptedTo110DebugMiddleware(MiddlewareMixin, DebugToolbarMiddleware):
    pass
Run Code Online (Sandbox Code Playgroud)