【发布时间】:2017-01-22 04:11:02
【问题描述】:
我在 Django 中有一个基于函数的视图:
@login_required
def bout_log_update(request, pk):
...
虽然它受到未登录的人的保护,但我需要能够根据以下条件限制对该视图的访问: 1.当前登录的用户 2.对象是哪个用户创建的(pk指的)
仅当当前登录的用户创建了正在访问的对象,或者是超级用户时才需要访问它。
标准的@user_passes_test 装饰器可以做到这一点吗?还是定制装饰器?或者完全是另一种方法?
如果可以的话,我会将其重写为基于类的视图并使用 UserPassesTestMixin,但我不知道这个特定视图是否可行。
【问题讨论】:
-
你不能使用
user_passes_test,因为测试功能只能访问登录用户,不能访问主键。您必须编写一个自定义装饰器。