settings.DEBUG 的值在 Django 测试中的设置和 url 之间变化
Posted
技术标签:
【中文标题】settings.DEBUG 的值在 Django 测试中的设置和 url 之间变化【英文标题】:Value of settings.DEBUG changing between settings and url in Django Test 【发布时间】:2017-01-10 08:57:14 【问题描述】:我正在尝试为一些仅在调试中设置的 URL 设置测试。它们没有设置,因为在我的设置文件和 urls.py 之间显然 DEBUG 的值更改为 False。我以前从未遇到过这个问题,我不记得做过什么特别花哨的涉及 DEBUG 值的事情。
这是我的 urls.py :
from django.conf import settings
from my_views import dnfp
print "settings.DEBUG in url: ".format(settings.DEBUG)
if settings.DEBUG:
urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"...
这是我的设置文件:
DEBUG=True
print "DEBUG at the end of the settings: ".format(DEBUG)
我测试失败的内容:
reverse("debug_not_found_page"),
这是测试的输出:
DEBUG at the end of the settings: True
settings.DEBUG in url: False
Creating test database for alias 'default'...
.E
(...)
NoReverseMatch: Reverse for 'debug_not_found_page' with arguments '()' and keyword arguments '' not found. 0 pattern(s) tried: []
如果我自己更改 urls.py 中的值,则会再次设置 url,并且测试可以使用此 urls.py :
from django.conf import settings
from my_views import dnfp
settings.DEBUG = True
if settings.DEBUG:
urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"...
任何想法何时以及为什么我的 DEBUG 值在设置和 url 之间发生变化?
【问题讨论】:
【参考方案1】:来自docs
无论配置文件中 DEBUG 设置的值如何,所有 Django 测试都以 DEBUG=False 运行。这是为了确保观察到的代码输出与生产环境中的输出相匹配。
【讨论】:
非常感谢!对于你们这些人是如何用谷歌搜索的,下一步就在这里:***.com/questions/7447134/…【参考方案2】:您的代码的问题是您在此行之后设置了 DEBUG = True
urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"
原因是所有的 URL 都已经附加到 urlpatterns[] 并且您在附加 URL 之后设置它,并且在附加 URL 时,Django 实际上将控制权转移到 urls.py 以进行语法验证。这就是为什么你在 urls.py 中得到不同的价值。
设置此行之前的DEBUG值
试试这个,希望它会工作。
您可以使用另一种方法来执行此操作,为所有这些类型的 URL 创建一个单独的应用程序,并且不要根据调试变量将该应用程序添加到 INSTALLED_APPS。
【讨论】:
以上是关于settings.DEBUG 的值在 Django 测试中的设置和 url 之间变化的主要内容,如果未能解决你的问题,请参考以下文章