3
下面的代碼是從字面上Django documentation about forms in class-based views:ClassName(object)中的super(ClassName,self)是做什麼用的? (在Django文檔使用)
import json
from django.http import HttpResponse
from django.views.generic.edit import CreateView
class AjaxableResponseMixin(object):
"""
Mixin to add AJAX support to a form.
Must be used with an object-based FormView (e.g. CreateView)
"""
def render_to_json_response(self, context, **response_kwargs):
data = json.dumps(context)
response_kwargs['content_type'] = 'application/json'
return HttpResponse(data, **response_kwargs)
def form_invalid(self, form):
if self.request.is_ajax():
return self.render_to_json_response(form.errors, status=400)
else:
return super(AjaxableResponseMixin, self).form_invalid(form)
def form_valid(self, form):
if self.request.is_ajax():
data = {
'pk': form.instance.pk,
}
return self.render_to_json_response(data)
else:
return super(AjaxableResponseMixin, self).form_valid(form)
class AuthorCreate(AjaxableResponseMixin, CreateView):
model = Author
我不明白的代碼是super(AjaxableResponseMixin, self)
。我知道super(ChildClass, self)
用於在子類的代碼中調用父類的方法。但是AjaxableResponseMixin
沒有任何父母!這是做什麼的?
我知道mro,但我不知道super可以這樣使用!謝謝。 – Bentley4 2013-03-22 19:39:37
不幸的是,我無法在將多個繼承,超級和MRO聯繫在一起的文檔中找到一個很好的單點,但是:http://docs.python.org/2/tutorial/classes.html#multiple-inheritance – 2013-03-22 20:59:10