Overriding/Adding 到设置中的 Django URL 而不是 url

Overriding/Adding to Django URLs in settings rather than urls

似乎最新的 Django 调试工具栏模块现在已更改为中间件,需要显式 URL 设置才能工作。对于我的 Django 项目,我总是尝试根据环境组织设置,而不是 if settings.DEBUG 在设置文件和项目中到处乱扔。

我的设置布局很一般:

common.py (everything in here)
development.py (dev only things here)
production.py (prod only things here)

在 Django 1.10 中有什么方法可以添加到 development.py 文件中的 URL 中,这样我就可以远离 if settings.DEBUG。或者我们想使用新版本的调试工具栏是否会被强制使用这种方法?

我只是发现下面有点反模式

if settings.DEBUG:
    import debug_toolbar
    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]

如果您不想在您的 URL 配置中测试 settings.DEBUG 的值,您可以使用类似于您正在使用的模式来管理您的 URL为您的设置。

您将拥有具有以下结构的 urls 包,而不是 urls.py 文件:

urls
├── __init__.py
├── common.py
├── local.py
└── production.py

在不同的设置文件中,您将指定要使用哪个 URL conf 文件:

# settings/local.py
ROOT_URLCONF = 'urls.local'

# settings/production.py
ROOT_URLCONF = 'urls.production'

urls/common.py 文件将公开一个 urlpattern 成员,其中包含您将在 urls/local.py 和 [=21] 中导入和使用的所有配置通用的所有 URL 模式=].

例如:

# urls/common.py
urlpatterns = [
    # Put all common URL patterns here
]

# urls/local.py
from .common.py import urlpatterns as common_urlpatterns

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

如果你想听听我的意见,考虑到与设置不同,URL 配置在环境之间应该没有太大差异,这个解决方案感觉有点矫枉过正。