Django @override_settings不允许字典? [英] Django @override_settings does not allow dictionary?
本文介绍了Django @override_settings不允许字典?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这对我有用:
def test_something(self):
settings.SETTING_DICT ['key'] = True #no error
...
但是这会抛出一个SyntaxError:关键字不能是表达式:
@override_settings(SETTING_DICT ['key'] = True)#error
def test_something(self):
...
只是为了清楚,正常使用覆盖设置工作:
@override_settings(SETTING_VAR = True)#no error
/ pre>
def test_something(self):
...
有没有办法使用装饰器设置字典,还是我做错了?
提前感谢
解决方案你应该覆盖整个dict:
@override_settings(SE TINT_DICT = {'key':True})
def test_something(self):
...
或者,您可以使用
override_settings
作为上下文管理器:def test_something(self):
value = settings.SETTING_DICT
value ['key'] = True
with override_settings(SETTING_DICT = value):
...
I am new to Python decorators so perhaps I am missing something simple, here is my situation:
This works for me:
def test_something(self): settings.SETTING_DICT['key'] = True #no error ...
But this throws a "SyntaxError: keyword can't be an expression":
@override_settings(SETTING_DICT['key'] = True) #error def test_something(self): ...
Just to be clear, normal use of override settings works:
@override_settings(SETTING_VAR = True) #no error def test_something(self): ...
Is there a way to use the decorator with a settings dictionary, or am I doing something wrong?
Thanks in advance!
解决方案You should override the whole dict:
@override_settings(SETTING_DICT={'key': True}) def test_something(self): ...
Or, you can use
override_settings
as a context manager:def test_something(self): value = settings.SETTING_DICT value['key'] = True with override_settings(SETTING_DICT=value): ...
这篇关于Django @override_settings不允许字典?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文