Вызов вручную общего представления на основе классов - PullRequest
21 голосов
/ 31 августа 2011

В настоящее время я пытаюсь вызвать универсальное представление на основе классов из другого универсального представления на основе классов и, похоже, не может сделать это правильно.

Способы, которые я пробовал:

result = CategoryTypes.as_view()  # The same way you put it in the urlconf
print result

Отпечатки: <function CategoryTypes at 0x92bd924>

CategoryTypes.as_view()(self.request)
# &
CategoryTypes().dispatch(self.request)

Tracebacks:

ContentNotRenderedError at /crm/categories/company/ The response content must be rendered before it can be accessed.

result = CategoryTypes().__init__()
print result

Отпечатки: None

Как я могу назвать это из другого ракурса? Я серьезно попробовал каждый метод в классе и способ его вызова.

Ответы [ 2 ]

35 голосов
/ 31 августа 2011

Первый путь - CategoryTypes.as_view()(self.request) - правильный.Проблема заключается в том, что если ваше представление возвращает TemplateResponse, его метод render не вызывается автоматически.

Поэтому, если вам нужен доступ к содержимому ответа, сначала вызовите render() для него.

0 голосов
/ 25 сентября 2017

Или вы можете напрямую получить доступ только к контенту через result.rendered_content. Прежде чем сделать это, убедитесь, что вы установите сеанс в свой запрос, прежде чем переходить в представление:

self.request.session = {}
CategoryTypes.as_view()(self.request)
...