Answer a question

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!

Answers

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):
         ...
Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐