我的应用中有很多基于类的视图。它们中的大多数应该只能由经过身份验证的员工用户访问。如何轻松地为大量基于类的视图添加用户检查?
对于标准功能视图,我添加了如下装饰器:
def only_staff_allowed(fn):
'''decorator'''
def wrapped(request, *args, **kwargs):
if request.user.is_staff:
return fn(request, *args, **kwargs)
else:
return HttpResponseRedirect(reverse('moderator:login'))
return wrapped
@only_staff_allowed
def dashboard(request):
''' now accessible only by staff users '''
return render(request, 'moderator/dashboard.html', {})
我怎样才能做类似这样的基于类的视图?
class AddressesAddList(ListView):
template_name = 'moderator/addresses/add_list.html'
queryset = Address.objects.filter(need_moderating=True)
paginate_by = 100
我应该添加一些mixin还是覆盖一些方法?或者我可以装饰一些东西吗?