[英]Value of settings.DEBUG changing between settings and url in Django Test
我正在嘗試為僅在調試中設置的某些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價值在設置和網址之間發生變化?
來自文檔
無論配置文件中DEBUG設置的值如何,所有Django測試都以DEBUG = False運行。 這是為了確保您觀察到的代碼輸出與生產設置中的內容相匹配。
您的代碼的問題是您在此行之后設置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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.