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'),
]
答案 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
....