0
为什么我们TEMPLATE_NAME =无作为类变量吗?(从Django中的源代码)理解蟒蛇类变量
这是因为如果self.template_name是无,会产生一个错误?
(self.template_name会找实例变量,如果它不存在,将返回类变量)
如果是的话,那岂不是更好有def __init__(self): self.template_name = None ?
class TemplateResponseMixin(object):
"""
A mixin that can be used to render a template.
"""
template_name = None
response_class = TemplateResponse
def render_to_response(self, context, **response_kwargs):
"""
Returns a response with a template rendered with the given context.
"""
return self.response_class(
request = self.request,
template = self.get_template_names(),
context = context,
**response_kwargs
)
def get_template_names(self):
"""
Returns a list of template names to be used for the request. Must return
a list. May not be called if render_to_response is overridden.
"""
if self.template_name is None:
raise ImproperlyConfigured(
"TemplateResponseMixin requires either a definition of "
"'template_name' or an implementation of 'get_template_names()'")
else:
return [self.template_name]
谢谢。问题为mixin。 Mixin的另一个名字是“函数组合”? – eugene
@Eugene不,函数组合是一个完全不相关的概念(它是对函数的操作,而Mixin是一种类)。 – delnan
哦,我只是编造了这个词,不知道是否有一个术语“功能组合”..我的意思是“混合是将功能组合在另一个类中”。 (反对将另一个类中的函数/数据结合起来,这将成为继承) – eugene