2016-11-26 2 views
0

Я мой взгляд определяется следующим образом:Джанго дополнительный элемент контекста в HttpResponse

class HomeView(TemplateView): 
    template_name = "home.html" 

    def get_context_data(self, **kwargs): 
     context = super(HomeView, self).get_context_data(**kwargs) 
     context['items'] = Item.objects.all() 
     return context 

    def get(self, request, *args, **kwargs): 

     #Getting data from an api call here 
     response = api.get_some_items() 
     list_with_items = [] 
     for i, item in enumerate(response): 
      list_with_items.append(item.name) 

     template = loader.get_template('home.html') 
     context = self.get_context_data(**kwargs) 
     context['extra_items'] = list_with_items 

     return HttpResponse(template.render(context, request)) 

В цикле шаблона I по списку, как следует, но это, кажется, не делает ничего из этого контекста, который я знаю потому что я положил там тег {% empty %}.

{% for item in items %} 
    {{ item }} 
{% empty %} 
    <p>No items</p> 
{% endfor %} 

Что здесь не так?

EDIT: Когда я ставлю след прямо перед HttpResponse, context['extra_items'] вернул все элементы в списке, но не делает его в шаблон

ответ

3

Я думаю, что вы Мессинг с видом на основе класса. Зачем вы использовали для этого TemplateView?

Вы можете попробовать что-то вроде этого, вместо:

from django.views.generic.list import ListView 


class HomeView(ListView): 
    model = Item 
    context_object_name = 'items' 
    template_name = "home.html" 

    def get_context_data(self, **kwargs): 
     context = super(HomeView, self).get_context_data(**kwargs) 
     response = api.get_some_items() 
     list_with_items = [] 
     for i, item in enumerate(response): 
      list_with_items.append(item.name) 
     context['extra_items'] = list_with_items 
     return context 
+0

Ах, они делают дисплей в настоящее время действительно, спасибо! – dnsko

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