【发布时间】:2014-09-03 05:30:55
【问题描述】:
在 Django 文档 Class based views - Mixins 中,我发现了以下关于使用包装 as_view() 方法以提供额外功能的混合的 sn-p:
from django.contrib.auth.decorators import login_required
class LoginRequiredMixin(object):
@classmethod
def as_view(cls, **initkwargs):
view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
return login_required(view)
class MyView(LoginRequiredMixin, ...):
# this is a generic view
...
在上面的示例中,作者将标准的as_view() 方法包装在一个mixin 中,以便从LoginRequiredMixin 继承的每个视图都通过login_required 装饰器。
我的问题是:为了这条线工作
view = super(LoginRequiredMixin, cls).as_view(**initkwargs),
MyView 不应该也继承自View 吗?否则我相信对 super 的调用会因为object 没有as_view() 方法而失败。
提前致谢。
【问题讨论】:
标签: python django django-views multiple-inheritance mixins