31

Próbuję zrobić coś takiego:Jak używać get_context_data z TemplateView w 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') 

Kiedy próbuję uzyskać dostęp dahl_books w moim szablonie tak:

{% for book in dahl_books %} 

dahl_books jest niedostępne w kontekście szablonu, mimo że Books QuerySet zwrócił niezerową liczbę książek. .... czy robię coś nie tak w moim szablonie, czy w get_context_data?

+0

To pytanie zostało tak bardzo pomocny, chciałbym móc głosować go sto razy ... Szukałem sposobów, aby wyświetlić ponownie zdefiniowany get_context_data do szablonu, ale tak trudno go znaleźć ... dzięki bardzo! (I nie zgadzam się z bliskim głosowaniem - to bardzo pytanie). –

+0

Zauważyłem, że ta nowa funkcja jest interesująca: http://reinout.vanrees.org/weblog/2014/05/19/context.html – Paolo

Odpowiedz

48

nie mogę go przetestować, ale założę się, trzeba

return context 

na koniec get_context_data :)

+0

Mam kontynuację, czy mogę odrzucić kontekst jako zmienną klasy zamiast lokalnej i zwrócić ją ? – rtindru

+0

Będziesz musiał zaimplementować jego użycie jako zmiennej klasy, ale możesz uzyskać dane kontekstu, jak tylko chcesz. Po prostu zdaj sobie sprawę, że django szuka get_context_data, więc będziesz musiał przesłonić sposób, w jaki django szuka go w twoich metodach pobierania i publikowania. –

Powiązane problemy