我遇到了一个要求,我需要在数据库中保存一些设置Key,Value。所以我用Key,Value字段创建了一个Model。现在我想访问这些值。我想到的第一件事就是从数据库中获取价值。这是一个例子。
class Settings(models.Model):
key = models.CharField(max_length=50)
value = models.CharField(max_length=100)
@classmethod
def get_key_value(cls, key):
obj = cls.objects.filter(key==key)
if obj.count() > 0:
return obj.first().value;
return None
class Meta:
db_table = u'app_settings'
我认为每次点击数据库都不是一个好主意。我想在全局变量或会话中保存所有列表。
如何在全球范围内存储数据?
我不知道这是好方法吗?请建议我更好的方法。
答案 0 :(得分:0)
为什么在可以直接访问settings.py中的数据时需要保存?
from django.conf import settings
print settings.SOME_VALUE
所以没有必要保存我相信
答案 1 :(得分:0)
在这种情况下,您需要拥有一个集中的数据存储,它将充当最可靠的数据库。
您可以在设置文件中设置相应的键值对,只需导入就可以使用设置文件键,值对。
但请记住,在每次重启服务器时,设置文件密钥,值对都将重置为默认值。
但是,您也可以编写一个在每次重启服务器时运行的函数,该函数获取相应的数据库值并填充设置文件值。
In settings file:
keys = get_keys()
key_setter.py:
def get_keys():
### Write function as per your requirements ###
现在您只需导入“密钥”并在视图中使用它们。
在对数据库值进行任何更改时,请确保服务器重新启动。您的数据库必须是唯一真实的来源。您还可以向更新设置文件值的模型添加保存后方法。
我有类似的要求,我必须在设置文件中动态填充allowed_hosts。我通过从数据库中获取某些值的函数调用实现了这一点。这个函数会在每次服务器重启时运行,我还添加了一个post save方法来修改设置文件allowed_hosts变量。