【发布时间】:2017-09-08 15:09:40
【问题描述】:
我在查看页面上有这个方法。它工作正常并正确显示所有内容,但我想将其转换为通用列表视图,以便我可以对其应用分页。
这里是函数:`
#views.py
def index(request):
all_artists = Artist.objects.all()
all_songs = Song.objects.all()
all_albums = Album.objects.all()
return render(request, 'index.html', {'all_albums':all_albums,'all_songs':all_songs, 'all_artists':all_artists})
所以我遵循了一些教程并最终得到了这个:
#new views.py
class IndexView(ListView):
template_name = 'index.html'
context_object_name = 'home_list'
queryset = Artist.objects.all()
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['all_artists']=Artist.objects.all()
context['all_songs']=Song.objects.all()
context['all_albums']=Album.objects.all()
虽然它编译没有任何错误,但当我渲染页面时,上下文对象不会被渲染。 非常感激你的帮助! 谢谢你
编辑(17 年 4 月 13 日): 谢谢你们!经过一些小的修改,它终于可以工作了。
class IndexView(generic.ListView):
template_name = 'index.html'
context_object_name = 'home_list'
queryset = Artist.objects.all()
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['all_artists']=Artist.objects.all()
context['all_songs']=Song.objects.all()
context['all_albums']=Album.objects.all()
return context
enter code here
enter code here
【问题讨论】:
-
没有必要为了使用分页而转换为通用视图;您当然可以在基于函数的视图中使用分页。但是什么,你到底在分页吗?您在那里有三个单独的查询集。
标签: python django listview generics detailview