在Django的代码中引用response_class
:
django/base.py
class TemplateResponseMixin:
"""A mixin that can be used to render a template."""
response_class = TemplateResponse
def render_to_response(self, context, **response_kwargs):
response_kwargs.setdefault('content_type', self.content_type)
#here
return self.response_class(
#here
request=self.request,
template=self.get_template_names(),
context=context,
using=self.template_engine,
**response_kwargs
)
班级属性设置response_class = TemplateResponse
,
通过实例的属性self.response_class
来调用它,
我想这可能是super().response_class
如何理解?
答案 0 :(得分:1)
调用超类方法时需要使用super()
。但是如果response_class
TemplateResponseMixin
只是在self.response_class
内定义了属性,那么您可以通过response_class
简单地访问它。由于Class
()
为{}},您需要添加self.response_class(*args, **kwargs)
,如下所示:super()
。
您可以查看question以获取有关class A:
def method_a(self):
pass
class B(A):
some_class = SomeClass
def method_a(self):
super().method_a() # This code will find A's method_a and call it
self.some_class() # This will only instancinate some_class attribute of current B's instance
。
示例:
<table class="table table-borderless">