我需要一些帮助,我有一个Web应用程序,其中包含用户管理的经典功能(帐户创建,登录等)。我的问题是,当我连接(登录)时,我试图为每个用户创建一个对象“UserObject”(不是可序列化对象)的实例,该对象将用于在某些视图中处理用户请求,因此该对象必须是可以从任何视图访问,因为我在view.py中有一个全局字典“users_objects”,其中包含所有用户对象(字典键是用户名,值是“UserObject”对象),所以view.py看起来像这样:
from user_object import UserObject
users_objects = {}
def login(request):
//login control and creation of session and context
......
......
global users_objects
user_name = request.session['name']
users_objects[user_name] = UserObject()
return render(request, 'mySite/home.html', context)
def request_view(request):
param = request.GET.get('parameter', None)
global users_objects
user_name = request.session['name']
obj = users_objects[user_name]
res = obj.process(param)
return HttpResponse(str(res))
这种方法适用于django dev-server,但是当我用真正的生产服务器(apache)配置django时,全局字典“users_objects”的内容消失了,我得到一个空字典。拜托,有谁知道为什么会这样?什么是使用全球字典的最佳解决方案 在django? 提前谢谢你
答案 0 :(得分:1)
发生这种情况的原因是因为mod_wsgi正在运行具有多个进程的应用程序,每个进程都有自己的可变空间。
但没有充分理由这样做。数据存储在数据库中,不要将其放在全局对象中。