【发布时间】:2017-11-04 16:28:44
【问题描述】:
我有以下类用于使用表单集显示相关课程模块
class CourseModuleUpdateView(TemplateResponseMixin, View):
template_name = 'courses/manage/module/formset.html'
course = None
def get_formset(self, data=None):
return ModuleFormSet(instance=self.course, data=data)
def dispatch(self, request, *args, **kwargs):
self.course = get_object_or_404(Course,
id=kwargs['pk'],
owner=request.user)
super(CourseModuleUpdateView, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
formset = self.get_formset()
return self.render_to_response({'course': self.course, 'formset': formset})
负责此 CBV 的 URL 模式
url(r'^(?P<pk>\d+)/module/$', views.CourseModuleUpdateView.as_view(), name='course_mudule_update')
发出获取请求我收到以下错误
追溯:
File "/home/mtali/.virtualenvs/educa/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/home/mtali/.virtualenvs/educa/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
198. "returned None instead." % (callback.__module__, view_name)
Exception Type: ValueError at /courses/4/module/ Exception Value: The view courses.views.CourseModuleUpdateView didn't return an HttpResponse object. It returned None instead.
我的代码有什么问题!我正在使用 django 1.11
【问题讨论】:
-
你能不能在 dispatch 方法中使用 "return super(CourseModuleUpdateView, self).dispatch(request, *args, **kwargs)"。
-
谢谢老哥,成功了!但是我为什么要返回`super().dispatch()`,因为它在它的父节点上返回 get 和 post 句柄!