从基于类的视图中的HTTP方法返回响应对象

问题描述 投票:0回答:1
class BaseListView(MultipleObjectMixin, View):
    """A base view for displaying a list of objects."""
    def get(self, request, *args, **kwargs):
        self.object_list = self.get_queryset()
        allow_empty = self.get_allow_empty()

        if not allow_empty:
            # When pagination is enabled and object_list is a queryset,
            # it's better to do a cheap query than to load the unpaginated
            # queryset in memory.
            if self.get_paginate_by(self.object_list) is not None and hasattr(self.object_list, 'exists'):
                is_empty = not self.object_list.exists()
            else:
                is_empty = not self.object_list
            if is_empty:
                raise Http404(_('Empty list and “%(class_name)s.allow_empty” is False.') % {
                    'class_name': self.__class__.__name__,
                })
        context = self.get_context_data()
        return self.render_to_response(context)

所以我从文档中获取了这段代码,我对render_to_response()方法感兴趣,我有环顾四周,我相信它构造了一些指定的Response类(templateReponseMixin.response_class属性)或默认Response类(TemplateResponse类)的实例,可以比我更有经验的人告诉我Response实例是否也在render_to_response()中呈现方法并返回,或者它将由另一个中间件代码呈现?

django
1个回答
0
投票

与您的问题有关的两件事:

  1. 似乎您忘记了将模板传递给此方法。 Here是签名。是的,它将通过调用render_to_string模块的template loader呈现模板。基本上唯一的区别是renderrequest对象传递到模板上下文中,而此方法不是。
  2. 如果您从头开始创建项目,我想您可能不会因为render_to_response而烦恼自己,因为从v2.0开始它已不推荐使用
© www.soinside.com 2019 - 2024. All rights reserved.