Estoy a punto de agregar una paginación a mi lista de contactos. Estoy sentado sobre eso todo el día y no tengo idea de lo que mezclé. Lo importante es que tengo filtros que funcionan, por lo que puedo reducir la lista. Pero, según tengo entendido, la paginación debería funcionar de todos modos. En mi caso, no veo nada, así que mi conjetura es primero "si" falla. Si pudiera señalarme en la dirección correcta. Saludos.
Vistas.py
def ContactsList(request): contacts_list = Contact.objects.all() Contacts_filter = LFilter(request.GET, queryset=contacts_list) #pagination page = request.GET.get('page', 1) paginator = Paginator(contacts_list, 20) try: contacts = paginator.page(page) except PageNotAnInteger: contacts = paginator.page(1) except EmptyPage: contacts = paginator.page(paginator.num_pages) return render(request, 'index.html', context, {'filter': contacts_filter})Parte de la plantilla:
{% if contacts.has_other_pages %} <ul class="pagination"> {% if contacts.has_previous %} <li><a href="?page={{ contacts.previous_page_number }}">«</a></li> {% else %} <li class="disabled"><span>«</span></li> {% endif %} {% for i in contacts.paginator.page_range %} {% if library.number == i %} <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li> {% else %} <li><a href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} {% if contacts.has_next %} <li><a href="?page={{ contacts.next_page_number }}">»</a></li> {% else %} <li class="disabled"><span>»</span></li> {% endif %} </ul> {% endif %}problema con esta linea:
return render(request, 'index.html', context, {'filter': contacts_filter}) aquí está pasando el contexto como filter solo y contacts faltantes
así que cambia esto a
return render(request, 'index.html', context, {'filter': contacts_filter,'contacts': contacts})