Django CBV UserPassesTestMixin test_func 不是 运行

Django CBV UserPassesTestMixin test_func not running

test_func 根本没有出现在 运行 面前。现在我只是检查用户是否是员工,作为一个简单的测试。这是代码:

class MyModelCreate(CreateView, UserPassesTestMixin):

    def test_func(self):
        print("checking if user passes test....")
        return self.request.user.is_staff

    model = MyModel
    ....

但是,当我转到此模型的创建页面时,任何人都可以编辑它,python 控制台没有输出显示 test_func 运行s .

视图名为:

urlpatterns = [
    ...
    url(r'^create/$', views.MyModelCreate.as_view(), name='my_model_create'),
]

在 python 中,classes 的顺序很重要,因为它们的方法会相互覆盖 您基于 class 的视图应如下所示:

class MyModelCreate(UserPassesTestMixin, CreateView):

def test_func(self):
    print("checking if user passes test....")
    return self.request.user.is_staff

model = MyModel
....