【发布时间】:2016-08-06 22:25:44
【问题描述】:
我正在尝试实现 staff_member_required mixins:
以下是我找到的两种方法:
第一:
class StaffRequiredMixin(object):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_staff:
messages.error(
request,
'You do not have the permission required to perform the '
'requested operation.')
return redirect(settings.LOGIN_URL)
return super(StaffRequiredMixin, self).dispatch(request,
*args, **kwargs)
第二:
class StaffRequiredMixin(object):
@classmethod
def as_view(self, *args, **kwargs):
view = super(StaffRequiredMixin, self).as_view(*args, **kwargs)
return staff_member_required(view)
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_staff:
messages.error(
request,
'You do not have the permission required to perform the '
'requested operation.')
return redirect(settings.LOGIN_URL)
return super(StaffRequiredMixin, self).dispatch(request,
*args, **kwargs)
我想知道的是:
为什么第二种方法是覆盖
as_view()方法并用staff_member_required包装它?这样做是否会获得任何“额外”优势?
我是这些 mixin 的新手。请帮忙。
【问题讨论】:
标签: django django-views mixins