def index(request):
return _listing(request, published_posts(), index)
def published_posts():
return Post.objects.filter(published_at__lte=timezone.now())
def _listing(request, queryset, view, tag=None):
"""Listado paginado: una entrada por artículo en el idioma activo.
`view` es la vista que llama (index o tag_index): su "Show Code" enseña esa
vista, la consulta de publicados y este listado, que es donde está el trabajo.
"""
posts = pick_language(
queryset.select_related("author").prefetch_related("tags"), translation.get_language()
)
page_obj = Paginator(posts, POSTS_PER_PAGE).get_page(request.GET.get("page"))
logger.debug("Got %d posts (page %s)", len(posts), page_obj.number)
return render(request, "blog/index.html", {
"posts": page_obj.object_list, "page_obj": page_obj, "tag": tag,
**show_code([view, published_posts, _listing], "blog/index.html"),
})