如何正确将大写变量传入Django settings.configure()解决大写要求错误
解决Django settings.configure()的大写配置项错误
错误原因
Django要求所有配置项的名称必须大写,你代码中循环调用settings.configure(item=func(item))时,用了小写的item作为配置项名称,违反了这个规则,因此触发TypeError: Setting 'item' must be uppercase错误。
另外需要注意:settings.configure()应该只调用一次,循环中多次调用会覆盖之前的配置,不符合Django的使用规范。
正确写法
情况1:items中是大写的配置项名称
如果你的items列表存储的是DEBUG、SECRET_KEY这类大写的合法配置项名称,先将所有配置键值对存入字典,再一次性传递给configure():
from django.conf import settings def func(i): # 编写逻辑,返回对应配置项的值 # 示例:根据配置名返回对应值 if i == "DEBUG": return True elif i == "SECRET_KEY": return "your-secret-key-here" # 其他配置项的处理逻辑 # 构建配置字典 settings_config = {} for item in items: settings_config[item] = func(item) # 一次性配置所有项 settings.configure(**settings_config)
情况2:items中是小写的配置项名称
如果items里是小写名称,需要先将其转为大写,再构建配置字典:
from django.conf import settings def func(i): # 编写逻辑,返回对应配置项的值 settings_config = {} for item in items: # 将配置项名称转为大写 setting_name = item.upper() settings_config[setting_name] = func(item) settings.configure(**settings_config)
关键说明
- 使用
**settings_config将字典解包为关键字参数,确保每个配置项名称都是大写,符合Django的要求。 - 只调用一次
settings.configure(),避免重复配置导致的问题。
内容的提问来源于stack exchange,提问作者Faith Baghan
相关产品推荐
相关产品推荐

