经过太多思考,唯一的答案是否定的,该功能已被删除。
并且文档没有提到“已删除的功能”,也没有解释为什么会这样。
但是为了让我的生活更轻松,我接受了@aidan 的建议并进行了一些修改
class ExtraContext(object):
extra_context = {}
def get_context_data(self, **kwargs):
context = super(ExtraContext, self).get_context_data(**kwargs)
context.update(self.extra_context)
return context
class ExtraListView(ExtraContext, ListView):
pass
class ExtraDetailView(ExtraContext, DetailView):
pass
class ExtraUpdateView(ExtraContext, UpdateView):
pass
class ExtraCreateView(ExtraContext, CreateView):
pass
class ExtraDeleteView(ExtraContext, DeleteView):
pass
class ExtraCloneView(ExtraUpdateView):
def post(self, request, *args, **kwargs):
return ExtraCreateView.as_view(model=self.model,
template_name=self.template_name,
extra_context=self.extra_context)(request, *args, **kwargs)
现在我有了可以直接在 URLSconf 中使用的半通用视图,并将 extra_context 字典传递给 as_view() 调用
url(r'^camera/(?P<pk>\d+)/$',
views.ExtraDetailView.as_view(model=models.Camera,
extra_context={'action_type': 'detail', 'mod_name' : 'camera'},
template_name='cameras/camera_detail.html'),
name='camera_detail'),