首页 > 解决方案 > ListView 调用 `get_template_names` 而不调用它

问题描述

我正在阅读 Django 源代码ListViewdjango/list.py

class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
    template_name_suffix = '_list'
    def get_template_names(self):
       try:
            names = super().get_template_names()

class ListView(MultipleObjectTemplateResponseMixin, BaseListView):
    """
    Render some list of objects, set by `self.model` or `self.queryset`.
    `self.queryset` can actually be any iterable of items, not just a queryset.
    """

当我定义ListView时,template_name自动分配

class IndexView(generic.ListView):
    pass

MultipleObjectTemplateResponseMixin我认为应该有一个分配步骤

class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
    template_name_suffix = '_list'
    def get_template_names(self):
       try:
            names = super().get_template_names()
            ....
    template_name = self.get_template_names()

它如何调用get_template_names而不调用它?

标签: django

解决方案


get_template_namesrender_to_response在类的方法中调用,TemplateResponseMixin该类是 的超类MultipleObjectTemplateResponseMixin


推荐阅读