在设置中覆盖/添加Django URL而不是URL

时间:2017-01-19 13:31:56

标签: django django-debug-toolbar

似乎最新的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)),
    ]

1 个答案:

答案 0 :(得分:0)

如果您不想在网址配置中测试settings.DEBUG的值,则可以使用与您的设置类似的模式管理网址。

而不是urls.py文件,您将拥有一个具有此结构的urls包:

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

在您的不同设置文件中,您可以指定以这种方式使用的URL配置文件:

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

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

urls/common.py文件将公开urlpattern成员,其中包含您将在urls/local.pyurls/production.py中导入和使用的所有配置所共有的所有网址格式。

例如:

# 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配置在环境之间不应有太大差异。