簡體   English   中英

在Django Test中settings.DEBUG在設置和url之間切換的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM