Django CBV UserPassesTestMixin test_func没有运行

时间:2017-08-26 01:28:41

标签: python django django-class-based-views

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运行。

该视图被称为:

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

1 个答案:

答案 0 :(得分:1)

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

class MyModelCreate(UserPassesTestMixin, CreateView):

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

model = MyModel
....