MY_MSGS = {record.name : {'title':record.title, 'message':record.message} for record in MyTable.objects.all()}
现在必须在服务器启动时发生。
MY_MSGS
必须可以访问不同的视图文件。 fyi我有多个从
views.py
导入的视图文件
我认为主要问题是您不应该立即运行查询,而是在Django初始化了模型之后,等等。 我们可以通过推迟加载过程来做到这一点,并在我们真正需要一条消息时进行:
def get_message(name):
cache = get_message.cache
if cache is None:
cache = get_message.cache = {
record.name: {'title': record.title, 'message': record.message}
for record in MyTable.objects.all()
}
return cache.get(name)
get_message.cache = None
因此将其用作函数,例如:get_message(my_record_name)
当然,确保您永远不会在初始化过程中进行函数,所以不要将其作为方法字段的[django-doc]等。 .额外的优势是,只要您不需要任何消息,就不会获取这些信息。如果这样做,我们将不会第二次。
但通常这可能是一个问题:通常您不会在生产中经常重新启动Django服务器,因此消息可以保留为旧的月份。