编程语言
首页 > 编程语言> > python-在Django中创建单例,或通过其他任何方式针对全局的,按请求的可用对象

python-在Django中创建单例,或通过其他任何方式针对全局的,按请求的可用对象

作者:互联网

在开发“窗口小部件”(对象-呈现-使用一些自定义javascript文件)时,我面临着创建“包含脚本管理器”类型的需要(避免在渲染多个控件时重复包含相同的JS文件)查看).

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

有什么建议么?

解决方法:

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

但是,不建议这样做,所以不要使用全局变量

对于小部件的情况,在Django中的小部件和表单中有Media设置. https://docs.djangoproject.com/en/1.3/topics/forms/media/

媒体对象也可以添加在一起.添加两个媒体对象后,生成的Media对象将包含两个文件中媒体的并集.

因此,您可以与媒体打架.
您也可以将媒体直接合并到模板中

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

标签:django-context,requestcontext,python,django
来源: https://codeday.me/bug/20191202/2084817.html