我有几个视图,每个视图一次只能由一个用户加入。因此我使用锁定服务。我的想法如下:
class DummyView(View):
lock = Lock()
def dispatch(self, request, *args, **kwargs):
...
class Middleware:
...
def __call__(self, request):
# lock = view.get_lock_if_it_has_one (this is what I need help with)
lock.acquire()
response = self.get_response(request)
lock.release()
return response
如何按描述访问视图的lock属性?
答案 0 :(得分:0)
不确定您是否可以访问中间件中的视图,因此我只是建议更简单,易于实现/理解的内容。
只需创建一个模型 this.post = this.data.getPostById(this.postId).share().subscribe(data => {
this.post = data;
},
err => {
console.log("Oops!");
})
,其中包含字段Lock
(字段字段),view_name
(外键)& user
(布尔)。然后,当您想要锁定给定request.user的视图(检查匿名用户)时,只需使用is_acquired
&和Lock
来实例化user
模型。 view_name
,然后执行.acquire()
,基本上将is_acquired
更改为True
(并保存)。
如果您想检查是否已获取锁定,只需检查指定的条目.exists()
。
如果需要,可以运行一个使旧锁过期的定期任务。