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 配置在环境之间应该没有太大差异,这个解决方案感觉有点矫枉过正。
似乎最新的 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 配置在环境之间应该没有太大差异,这个解决方案感觉有点矫枉过正。