`TemplateResponseMixin`中的`self.response_class`不要调用super()

时间:2018-05-03 04:09:44

标签: django

在Django的代码中引用response_classdjango/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

如何理解?

1 个答案:

答案 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">