Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅适用于Django中当前用户的Python类实例_Python_Django_Web Applications_Backend - Fatal编程技术网

仅适用于Django中当前用户的Python类实例

仅适用于Django中当前用户的Python类实例,python,django,web-applications,backend,Python,Django,Web Applications,Backend,我是Django的新手,我正试图找出如何为当前用户保存一个类实例,我正试图做的是将我的用户登录到Firebase,然后从Firebase上的数据库检索数据,并将该数据保存在本地类上,直到用户注销为止,但是我所有保存这些类实例的尝试都使它们成为全局的(因此实际上每个用户都可以访问它们,并将覆盖上一个实例) 我的第一次尝试是在我的应用程序的views.py上,看起来是这样的: APPMANAGER=FirebaseManager() def主页(请求:HttpRequest)->HttpRespon

我是Django的新手,我正试图找出如何为当前用户保存一个类实例,我正试图做的是将我的用户登录到Firebase,然后从Firebase上的数据库检索数据,并将该数据保存在本地类上,直到用户注销为止,但是我所有保存这些类实例的尝试都使它们成为全局的(因此实际上每个用户都可以访问它们,并将覆盖上一个实例)

我的第一次尝试是在我的应用程序的views.py上,看起来是这样的:

APPMANAGER=FirebaseManager()
def主页(请求:HttpRequest)->HttpResponse:
APPManager.loadData(request.POST.get(“数据”))
返回HttpResponse(“完成”)
但是,
APPMANAGER
将被全局保存(如果服务器重新启动,也将被删除)


我还检查了Django sessions(),这似乎是我想要做的,但它只获取可序列化的数据,我想保存一个自定义类实例,这样做的最佳方法是什么?

感谢@FelipeFaria的评论,我能够实现我想要的

我使用了Django会话,在我看来,存储在数据库上的缓存是正确的方法,首先,我配置了会话,安装了下面的Django应用程序(实际上它是默认安装的)

设置.py

已安装的应用程序=[
#其他应用程序
“django.contrib.sessions”,
#其他应用程序
]
然后,我将以下内容添加到另一行:

SESSION\u ENGINE='django.contrib.sessions.backends.cached\u db'
这将配置会话以在数据库上保存缓存,文档中说性能非常好,但是一个简单的缓存系统是最好的,因为它忽略了持久性(我需要持久性)

之后,我在Django提供的request.session dictionary(请求是在每个Django视图上发送的HttpRequest)上存储了所需的字典数据,需要时,我创建了一个类的新实例,并运行一个方法从缓存加载所有属性

views.py的示例

def索引(请求:HttpRequest)->HttpResponse:
如果在request.session中“登录”:
user=user()
user.load_数据(request.session['user_data']))
返回呈现(请求“main/index.html”,上下文={“user”:user})
返回重定向(“主:索引”)

更好地解释getter、setter、deleter和那些在文档中有更好的解释:

在Django中也是一个新手,所以出于好奇而询问。当您说
将该数据保存在本地类上,该类只有在用户注销之前才可用时
,首先想到的是您可以使用默认值,并通过
请求.user
参数调用保存在服务器上
视图.py
中的用户信息。@FelipeFaria主要是因为我不想将我的Firebase用户存储在本地数据库中,我想使用Django的user auth来提供Firebase之外的用户系统,继续此操作,我正在为Firebase创建一个管理面板,它不应该与Django的用户表放在一起,因为主web应用程序将有自己的用户(Firebase管理面板将是一个应用程序,web应用程序将是另一个应用程序),可能使用Firebase API(即)登录用户?请查看此帖子:。是Firebase文档中关于验证ID令牌的内容。@FelipeFaria我确实在这样做,但是我无法保存用户数据,因为我不知道保存它的位置,沿着这条路径我会遇到这个问题。我真的希望我能提供更多帮助,但我自己在
会话方面没有太多经验。也许查看其中一些项目可能会有所帮助:。它们都是相当小的项目——第一个似乎将Firebase ID保存在一个新模型中,并将外键保存给Djago的用户(与会话相反)。