Python 设置值。调试在Django测试中更改设置和url

Python 设置值。调试在Django测试中更改设置和url,python,django,testing,Python,Django,Testing,我正在尝试为一些仅在调试中设置的URL设置测试。未设置它们,因为调试的值在我的设置文件和url.py之间显然更改为False。我以前从未遇到过这个问题,而且我不记得做过任何特别涉及调试值的事情 以下是我的URL.py: from django.conf import settings from my_views import dnfp print "settings.DEBUG in url: {}".format(settings.DEBUG) if settings.DEBUG: u

我正在尝试为一些仅在调试中设置的URL设置测试。未设置它们,因为调试的值在我的设置文件和url.py之间显然更改为False。我以前从未遇到过这个问题,而且我不记得做过任何特别涉及调试值的事情

以下是我的URL.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"...
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=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: []
如果我自己在url.py中更改了该值,则会再次设置url,并且测试将使用此url.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"...
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"...
知道我的调试值在设置和URL之间更改的时间和原因吗?

来自

不管配置文件中调试设置的值是多少,所有Django测试都以DEBUG=False运行。这是为了确保观察到的代码输出与生产设置中的输出相匹配

不管配置文件中调试设置的值是多少,所有Django测试都以DEBUG=False运行。这是为了确保观察到的代码输出与生产设置中的输出相匹配


代码的问题是在这一行之后设置了DEBUG=True

   urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"
原因是所有的URL都已附加到urlpatterns[],您在附加URL之后进行设置,并且在附加URL Django时,为了进行语法验证,实际上会将控制权转移到URL.py。这就是为什么在url.py中得到不同的值

在此行之前设置调试的值

   urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"
试试这个,希望它能起作用


您可以使用另一种方法来执行此操作,为所有这些类型的URL创建一个单独的应用程序,并且不要基于调试变量将该应用程序添加到已安装的应用程序中。

代码的问题是您在这一行之后设置了debug=True

   urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"
原因是所有的URL都已附加到urlpatterns[],您在附加URL之后进行设置,并且在附加URL Django时,为了进行语法验证,实际上会将控制权转移到URL.py。这就是为什么在url.py中得到不同的值

在此行之前设置调试的值

   urlpatterns += [url(r'^dnfp/$', dnfp, name="debug_not_found_page"
试试这个,希望它能起作用


您可以使用另一种方法来执行此操作,为所有这些类型的URL创建单独的应用程序,并且不要基于调试变量将应用程序添加到已安装的应用程序中。

非常感谢!对于你们这些如何用谷歌搜索的人来说,下一步就是:非常感谢!对于你们这些如何用谷歌搜索的人来说,下一步是: