31

Я пытаюсь сделать что-то вроде этого:Как использовать get_context_data с TemplateView в Django

class AboutView(TemplateView): 
    template_name = 'about.html' 

    def get_context_data(self, **kwargs): 
     context = super(AboutView, self).get_context_data(**kwargs) 
     context['dahl_books'] = Books.objects.filter(author="Dahl') 

Когда я пытаюсь получить доступ к dahl_books в моем шаблоне так:

{% for book in dahl_books %} 

dahl_books является недоступны в контексте шаблона, даже несмотря на то, что QuerySet Books вернул ненулевое количество книг. .... Я делаю что-то не так в моем шаблоне или в get_context_data?

+0

Этот вопрос был настолько чрезвычайно полезно, если бы я мог голосовать его в сто раз ... Я искал способы отображения переопределенных get_context_data в шаблоне, но было так сложно найти его ... спасибо огромное! (И я не согласен с закрытым голосованием - это очень важный вопрос). –

+0

Я нашел эту новую функцию интересной: http://reinout.vanrees.org/weblog/2014/05/19/context.html – Paolo

ответ

48

Я не могу проверить это, но я уверен, что вам нужно

return context 

в конце get_context_data :)

+0

У меня есть продолжение, могу ли я объявить контекст как переменную класса вместо локального и вернуть его ? – rtindru

+0

Вам придется реализовать его использование в качестве переменной класса, но вы можете получить данные контекста, как хотите. Просто поймите, что django ищет get_context_data, поэтому вам придется переопределить способ поиска django в ваших методах получения и публикации. –

Смежные вопросы