31

Tôi đang cố gắng để làm một cái gì đó như thế này:Làm thế nào để bạn sử dụng get_context_data với TemplateView trong 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') 

Khi tôi cố gắng truy cập vào dahl_books trong mẫu của tôi như thế này:

{% for book in dahl_books %} 

dahl_books là không có sẵn trong ngữ cảnh mẫu, ngay cả khi Bộ truy vấn Sách trả về một số sách khác không. .... Tôi đang làm điều gì đó sai trong một trong hai mẫu của tôi hoặc trong get_context_data?

+0

Câu hỏi này rất cực kỳ hữu ích, tôi ước gì có thể bỏ phiếu nó lên một trăm lần ... Tôi đã tìm kiếm các cách để hiển thị get_context_data được định nghĩa lại cho mẫu, nhưng đã có một thời gian khó khăn để tìm kiếm nó ... cảm ơn rất nhiều! (Và tôi không đồng ý với cuộc bỏ phiếu gần - đó là một câu hỏi rất nhiều). –

+0

tôi thấy tính năng này mới thú vị: http://reinout.vanrees.org/weblog/2014/05/19/context.html – Paolo

Trả lời

48

tôi không thể kiểm tra nó, nhưng tôi đặt cược bạn cần

return context 

vào cuối get_context_data :)

+0

Tôi có một theo dõi, tôi có thể declore bối cảnh như là một biến lớp thay vì địa phương và trở về nó ? – rtindru

+0

Bạn sẽ phải thực hiện việc sử dụng nó như là một biến lớp nhưng bạn có thể nhận được dữ liệu ngữ cảnh theo ý muốn. Chỉ cần nhận ra rằng django trông cho get_context_data vì vậy bạn sẽ phải ghi đè lên cách django đang tìm kiếm nó trong các phương thức get và post của bạn. –

Các vấn đề liên quan