0

我有一個頁面應顯示事件和此事件的演示文稿。在我的代碼中他們不相關(我仍然必須解決這個問題)。在主頁上,它接收事件和演講,認爲是這樣的:將多個視圖傳遞給模板

views.py

class EventoView(ListView): 
    model = Evento 
    template_name = 'home.html' 
    context_object_name = 'evento_list' 
    queryset = Evento.objects.all().order_by('-data')[:1] 

class RegistroView(ListView): 
    model = Registro 
    template_name = 'home.html' 
    context_object_name = 'registro_list' 
    queryset = Registro.objects.all() 

的問題是,我只能通過事件對象,對象註冊,其中顯示索引的索引也必須通過,但只接受Django視圖的url。

urls.py

urlpatterns = patterns('', 
    url(r'^$', EventoView.as_view(), name='home'), #I can't pass two views 
    url(r'^cadastro/', CriarRegistroView.as_view(), name='cadastro'), 
    url(r'^contato/', CriarContatoView.as_view(), name='contato'), 
    url(r'^sobre/', SobreView.as_view(), name='sobre'), 
    url(r'^admin/', include(admin.site.urls)), 
) 

我怎樣才能解決這個問題?

謝謝。

回答

2

它看起來像你可以overrideListView.get_context_data

class RegistroView(ListView): 

    model = Evento 

    def get_context_data(self, **kwargs): 
     context = super(RegistroListView, self).get_context_data(**kwargs) 
     context['registros'] = Registro.objects.all() 
     context['eventos'] = Evento.objects.all().order_by('-data')[:1]    
     return context 

我沒有與ListViews經驗,所以我不知道如果我使用它,因爲它是應該被使用,或者不

+1

這是'get_context_data'的預期目的。通過這樣做,你不是在屠宰「ListView」。 – miki725

+0

@ dm035114,它的工作原理!謝謝 –

相關問題