所以我开始使用基于通用类的视图,我得说,它们确实节省了时间。但我想知道是否可以使用 mixins 来提供通用 impl 而不必在每个视图中编写代码。例如,我有一个ListView
and DetailView
。为了限制列表和编辑,我可以覆盖get_queryset()
并由登录用户过滤它。但正如你猜到的,我必须在每个视图中都这样做,
class JediListView(ListView):
def get_queryset(self):
q = <call super>.filter(user=request.user) #assume i have 'login_required' in the urls
class JediDetailView(DetailView):
def get_queryset(self):
q = <call super>.filter(user=request.user) #assume i have 'login_required' in the urls
我可以为每个视图创建一个新的父类,但我仍然会重复代码。
class RepublicListView(ListView):
# override get_queryset code as above
class JediListView(RepublicListView):
# repeat fot DetailView, DeleteView, UpdateView
我想知道 mixins,我完全确定 mixins 是如何工作的 [来自 java 背景,所以我同时感到敬畏和恐惧]