django projectstartup

问题描述 投票:0回答:1

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

因此将其用作函数,例如:
python django django-models django-views
1个回答
0
投票
get_message(my_record_name)

当然,确保您永远不会在初始化过程中进行函数,所以不要将其作为方法字段的[django-doc]

等。 .
额外的优势是,只要您不需要任何消息,就不会获取这些信息。如果这样做,我们将不会第二次。

但通常这可能是一个问题:通常您不会在生产中经常重新启动Django服务器,因此消息可以保留为旧的月份。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.