gpt4 book ai didi

python - 基于类的 View : where to check for permissions?

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:07 26 4
gpt4 key购买 nike

我不太习惯使用基于类的 View ,但我知道它们的好处,所以我强制自己开始更频繁地使用它们。

这个 View 接收一个路径参数:manage/:id 来管理一个特定的实体。

class MyView(TemplateView):
template_name = '...'

def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['entity'] = get_object_or_404(Entity, pk=self.args[0])
return context

一个实体包括一个授权用户列表来执行特殊操作。这个 View ,MyView 就是那些特殊操作之一。

我尝试为 View 制作一个装饰器,但它需要先找到 Entity,所以我不确定如何解决这个问题。

现在,我有一个 check_permission(request, entity) 函数来检查当前用户是否是这些授权用户之一。

我的问题是我应该在基于类的 View (如 MyView)中的什么地方调用此函数,这些 View 中的任何一个都将被视为“特殊操作”?

我应该只从 get_context_data() 调用它吗?

最佳答案

将其放入dispatch() .它可能看起来像这样:

class MyView(TemplateView):
template_name = '...'

def dispatch(self, request, *args, **kwargs):
entity = get_object_or_404(Entity, pk=args[0])
if not check_permission(request, entity):
raise Http404
return super(MyView, self).dispatch(request, *args, **kwargs)

关于python - 基于类的 View : where to check for permissions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41725317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com