考虑一下,我想为每个访问网站中特定功能的用户创建一个单例对象。该对象不是模型。
class NavApi:
__instance = None
@staticmethod
def get_instance():
""" Static access method. """
if NavApi.__instance is None:
Client()
return NavApi.__instance
在视图文件中
@csrf_exempt
def get_folder_tree(request):
if request.method == "POST":
nav_api = NavAPI.get_instance()
folders = nav_api.listing_folders(request.POST.get('id'))
return render(request,"folder_tree.html",{'folders': folders,'page1': False})
@csrf_exempt
def get_prev_folder_tree(request):
if request.method == "POST":
nav_api = NavAPI.get_instance()
page1,folders = nav_api.listing_prev_folder_tree()
return render(request,'page1':page1})
使用Singleton的原因是,类对象只有很少的成员来定义文件夹/内容/当前folder_id等的状态。因此,不应为每个视图都创建该对象。它需要重用
但是当我尝试公开运行它时,使用ngrok并将链接共享给我的朋友,并测试导航功能,
我们最终使用了相同的单例对象。当我浏览文件夹A的内容,而他浏览文件夹B的内容时,我们最终收到了同一文件夹(A或B)的内容。 如何克服这个问题?