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