在我写的Django应用程序中,我拥有的许多模型都附带了固有的所有权。我想检查一下,以确保我没有为用户提供他们不应该看到的任何东西。
因此,我调整了以下装饰器以检查他们是否拥有模型:
def must_be_yours_question(func):
def check_and_call(request, *args, **kwargs):
#user = request.user
#print user.id
pk = kwargs["id"]
Question = Question.objects.get(pk=pk)
if not (scene.user.id == request.user.id):
return HttpResponse("It is not yours ! You are not permitted !",
content_type="application/json", status=403)
return func(request, *args, **kwargs)
return check_and_call
但是,因为我至少有4种不同的对象类型,我想测试所有权,所以我不得不编写4个不同的装饰器。
有没有一种简单的方法来编写一个装饰器?最好的方法是传递一个论点吗?