在设置而非URL中覆盖/添加到Django URL

皮特克

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

如果您不想测试settings.DEBUGURL配置中的值,则可以使用与设置所用模式相似的模式来管理URL。

urls.py您将拥有一个urls具有以下结构软件包,而不是文件

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和中导入和使用的所有配置所共有的所有URL模式urls/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配置与环境之间的差异应该不大,因此此解决方案感觉有些过头了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章