python-Django跨文件全局变量管理
2021/8/9 17:05:51
本文主要是介绍python-Django跨文件全局变量管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 背景
- 创建全局变量管理模块 globalvar
- 初始化全局变量模块
- 使用全局变量模块
背景
python 中 global
关键字可以定义一个变量为全局变量,但是仅限于在当前模块(py文件)中调用全局变量,如果在另外一个py文件中,再次使用 global x
是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错,参数未定义。
借鉴global
的思路,既然在一个文件中可以生效,那么我们可以专门为全局变量定义一个全局变量管理模块
。
本文示例主要是基于Django框架项目作为例子, 便于在实战应用, 需要的朋友可以借鉴。
创建全局变量管理模块 globalvar
在app应用下创建 globalvar.py
文件: 写入以下函数,其实都是字典的基本操作功能。
def __init(**kwargs): """ 初始化全局变量 【Dict】 :param kwargs: 初始化参数 k=v :return: """ global _globals_dict _globals_dict = kwargs if kwargs else {} def set_value(key, value): """ 设置 :param key: Key :param value: Value :return: """ _globals_dict[key] = value def get_value(key, default=None): """ 获取单个 :param key: Key :param default: None :return: """ try: return _globals_dict[key] except KeyError: return default def get_all(default=None): """ 获取全部 :param default: None :return: """ try: return _globals_dict except Exception: return default def pop_value(key, default=None): """ 删除单个key :param key: Key :param default: None :return: """ try: return _globals_dict.pop(key) except KeyError: return default def clear(): """清空""" _globals_dict.clear()
初始化全局变量模块
在其他任意文件中调用上面的__init()
都会初始化一个全局变量Dict(不传参数就是空字典)。但是有的时候,只是让它初始化一次就OK,而且如何保证在Django项目启动时,自动初始化全局变量模块?
其实也好解决,在你的app
应用下或者与项目同名的文件
下,有一个__init__.py
文件,只需要在这里调用函数,在项目启动时就会自动初始化。一般初始化多用于全局变量、数据库连接、数据初始化等。
这里是在 app/__init__.py
下进行初始化:
from app import globalvar as gl gl.__init() # 初始化全局变量dict
可能会发现方法被调用了两次,这是因为你使用了python manage.py runserver该运行方式启动项目,这种方式会启动两个进程,其中一个进程用于监听用户修改代码后重新启动,但在真实环境中使用uwsgi启动项目则只会调用一次。如果你不愿意启动两个进程,也可以使用 python manage.py runserver --noreload
启动项目, --noreload关闭监听代码修改重启程序的意思。
使用全局变量模块
在其他文件中可以直接导入,设置、获取等操作全局变量了。
在views.py
中,简单请求设置,:
from app import globalvar as gl def set_user(request): gl.set_value('username', 'admin') # 设置 return HttpResponse('set ok')
在test.py
文件中,获取测试:
from app import globalvar as gl def get_user(): gl_dict = gl.get_all() # 获取全部 user = gl.get_value('username') # 获取单个 print(gl_dict, user) # {'username': 'admin'} admin get_user()
这篇关于python-Django跨文件全局变量管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器