gpt4 book ai didi

python - 在 django 中创建单例,或以任何其他方式创建全局的、按请求可用的对象

转载 作者:行者123 更新时间:2023-11-28 16:50:06 32 4
gpt4 key购买 nike

在开发“小部件”(使用一些自定义 javascript 文件呈现的对象)时,我面临着创建一种“包含脚本管理器”的需要(以避免在多个 JS 文件中重复包含同一 JS 文件为 View 呈现小部件)。

我的第一个想法是编写自定义模板呈现上下文,它将在模板中提供 EXTRA_SCRIPTS 变量。但是我不知道在请求处理期间应该在哪里收集脚本列表?我认为那是我需要单例对象的地方。

有什么建议吗?

最佳答案

如果你使用单例,你会遇到线程安全问题。例如。您的应用程序在多个线程中运行,一个线程处理单个请求,因此您的全局对象应该是每个线程,但单例是每个进程唯一的。您可以像 in this question 中描述的那样使用 threading.local 技术.它将为您提供每个线程和每个请求唯一的对象。

但是不推荐,所以不要使用全局变量

对于您使用小部件的情况,Django 中的小部件和表单中有媒体设置。 https://docs.djangoproject.com/en/1.3/topics/forms/media/

媒体对象也可以加在一起。添加两个媒体对象时,生成的媒体对象包含来自两个文件的媒体的并集。

这样您就可以与媒体抗争。您也可以将媒体直接组合到模板中

{{ form.media|add:info_form.media|add:discount_form.media }}

关于python - 在 django 中创建单例,或以任何其他方式创建全局的、按请求可用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8533885/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com