Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖/添加设置中的Django URL而不是URL_Django_Django Debug Toolbar - Fatal编程技术网

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

覆盖/添加设置中的Django URL而不是URL,django,django-debug-toolbar,Django,Django Debug Toolbar,似乎最新的Django调试工具栏模块现在已经改为中间件,需要显式URL设置才能工作。在我的Django项目中,我总是尝试根据环境组织设置,而不是将if settings.DEBUG散落在设置文件和项目中 我的设置布局是一个常规布局: 在Django 1.10中,有没有一种方法可以添加到development.py文件中的URL,这样我就可以避开if settings.DEBUG。或者如果我们想使用新版本的调试工具栏,我们会被迫使用这种方法吗 我只是觉得下面的有点反模式 如果不想在URL配置中测试

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

我的设置布局是一个常规布局:

在Django 1.10中,有没有一种方法可以添加到development.py文件中的URL,这样我就可以避开if settings.DEBUG。或者如果我们想使用新版本的调试工具栏,我们会被迫使用这种方法吗

我只是觉得下面的有点反模式


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

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

urls
├── __init__.py
├── common.py
├── local.py
└── production.py
在不同的设置文件中,您可以指定以这种方式使用哪个URL conf文件:

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

URL/common.py文件将公开一个urlpattern成员,其中包含所有配置所共有的URL模式,您将在URL/local.py和URL/production.py中导入和使用这些配置

例如:

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


如果你想听听我的意见,这个解决方案感觉有些过头了,因为与设置相比,URL配置在不同的环境中应该没有太大差异。

奇怪的是,我一开始没有想到这一点,尽管我是为设置而做的。啊!但是你的方法看起来确实是一个合理的选择。谢谢这是一个不错的解决方案,谢谢!关于模块名的一个警告。我将Python3.6与Django 1.11一起使用,结果表明它需要绝对模块路径,而不是相对根路径_URLCONF={{project_name}}.url',因此需要在设置文件中包含project_name,例如“xxx.url.local”
# settings/local.py
ROOT_URLCONF = 'urls.local'
# settings/production.py
ROOT_URLCONF = 'urls.production'
# 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)),
]