2015-12-18 59 views
2

我知道Django的override_settingssmodify_settings修飾器,但是如何覆蓋更復雜的設置?如何覆蓋測試中的嵌套Django設置

例如,我有這樣一個設定:

REST_FRAMEWORK = { 
    ...various keys... 
    'DEFAULT_THROTTLE_RATES = { 
     'anon': '100/day', 
    } 

    ...more keys... 
} 

我要的速率爲10000 /天,這樣我在本地工作時從來不打他們。 modify_settings只適用於列表,並使用override_settings我不得不重複整個變量(大約50行)。

任何解決方案?

回答

0

您可以使用REST_FRAMEWORK[DEFAULT_THROTTLE_RATES] = { 'anon': '400/day' }在您的本地/測試設置

你必須覆蓋整個字典,如果你正在使用@override_setttings。 Django @override_settings does not allow dictionary?

+0

是的,這也是我在幾分鐘前分析出來的,但我希望有一種方法可以讓重寫只在測試中才有用。 – mlissner

+0

您是否使用單獨的設置進行測試?如果是的話,你可以把這一行放在你的測試設置文件中。 –

+0

不....從未考慮使用單獨的設置進行測試,直到現在。這是常見的做法嗎?你如何使用不同的測試設置? – mlissner