我有一个页面应该显示事件和此事件的演示文稿。在我的代码中,它们没有关系(我仍然需要解决这个问题)。在接收事件和讲座的主页上,视图如下:
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()
问题在于我只能传递Event对象,即注册对象,其中显示的索引也必须传递,但是,只接受URL的Django视图。
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)),
)
我该如何解决这个问题?
感谢。
答案 0 :(得分:3)
看起来你可以override ListView.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
的经验所以我不知道我是否正在使用它,因为它应该被使用,或者不是