Возврат объекта ответа из методов HTTP в представлениях на основе классов - PullRequest
0 голосов
/ 13 февраля 2020
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 () и возвращен или он будет представлен другим кодом промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 13 февраля 2020

Две вещи, связанные с вашим вопросом:

  1. Кажется, вы забыли передать шаблон этому методу. Здесь - подпись. И да, он будет отображать шаблон, вызывая render_to_string модуля загрузчик шаблонов . По сути, единственное отличие состоит в том, что render передает объект request в контекст шаблона, а этот метод - нет.
  2. Если вы начинаете проект с нуля, я думаю, что вы можете не беспокоиться о render_to_response, потому что он был устарело с версии 2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...