tarantino pelicula descargar cantante django

pelicula - ¿Cómo uso la paginación con ListViews genéricos basados en la clase Django?



django wikipedia (2)

¿Cómo uso la paginación con Django 1.3?

La documentación no es muy clara en esto.

  • ¿Qué pasa con mi views.py ?

  • ¿Qué va a mi plantilla?

  • ¿Qué pasa con mi archivo URLconf?


Creo que pides información sobre el uso de la paginación con las nuevas vistas basadas en clases, ya que, con vistas basadas en funciones tradicionales, es fácil de encontrar. Descubrí que basta con configurar la variable paginate_by para activar la paginación. Ver en vistas genéricas basadas en clase .

Por ejemplo, en su views.py :

import models from django.views.generic import ListView class CarListView(ListView): model = models.Car # shorthand for setting queryset = models.Car.objects.all() template_name = ''app/car_list.html'' # optional (the default is app_name/modelNameInLowerCase_list.html; which will look into your templates folder for that path and file) context_object_name = "car_list" #default is object_list as well as model''s_verbose_name_list and/or model''s_verbose_name_plural_list, if defined in the model''s inner Meta class paginate_by = 10 #and that''s it !!

En su plantilla ( car_list.html ), puede incluir una sección de paginación como esta (tenemos algunas variables de contexto disponibles: is_paginated , page_obj y paginator ).

{# .... **Normal content list, maybe a table** .... #} {% if car_list %} <table id="cars"> {% for car in car_list %} <tr> <td>{{ car.model }}</td> <td>{{ car.year }}</td> <td><a href="/car/{{ car.id }}/" class="see_detail">detail</a></td> </tr> {% endfor %} </table> {# .... **Now the pagination section** .... #} {% if is_paginated %} <div class="pagination"> <span class="page-links"> {% if page_obj.has_previous %} <a href="/cars?page={{ page_obj.previous_page_number }}">previous</a> {% endif %} <span class="page-current"> Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}. </span> {% if page_obj.has_next %} <a href="/cars?page={{ page_obj.next_page_number }}">next</a> {% endif %} </span> </div> {% endif %} {% else %} <h3>My Cars</h3> <p>No cars found!!! :(</p> {% endif %} {# .... **More content, footer, etc.** .... #}

La página para mostrar se indica mediante un parámetro GET, simplemente agregando ?page=n , a la URL.


Supongo que tengo una clase en la aplicación / models.py llamada FileExam(models.Model) :

app / models.py

class FileExam(models.Model): myfile = models.FileField(upload_to=''documents/%Y/%m/%d'') date = models.DateTimeField(auto_now_add=True, blank=True) teacher_name = models.CharField(max_length=30) status = models.BooleanField(blank=True, default=False)

app / views.py

from app.models import FileExam from django.core.paginator import Paginator from django.core.paginator import EmptyPage from django.core.paginator import PageNotAnInteger class FileExamListView(ListView): model = FileExam template_name = "app/exam_list.html" paginate_by = 10 def get_context_data(self, **kwargs): context = super(SoalListView, self).get_context_data(**kwargs) list_exam = FileExam.objects.all() paginator = Paginator(list_exam, self.paginate_by) page = self.request.GET.get(''page'') try: file_exams = paginator.page(page) except PageNotAnInteger: file_exams = paginator.page(1) except EmptyPage: file_exams = paginator.page(paginator.num_pages) context[''list_exams''] = file_exams return context

solo un pequeño cambio en el get_context_data y el código de paginación agregado de la documentación de django here

app / templates / app / exam_list.html

lista de contenido normal

<table id="exam"> {% for exam in list_exams %} <tr> <td>{{ exam.myfile }}</td> <td>{{ exam.date }}</td> <td>.....</td> </tr> {% endfor %} </table>

sección de paginación

{% if is_paginated %} <ul class="pagination"> {% if page_obj.has_previous %} <li> <span><a href="?page={{ page_obj.previous_page_number }}">Previous</a></span> </li> {% endif %} <li class=""> <span>Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.</span> </li> {% if page_obj.has_next %} <li> <span><a href="?page={{ page_obj.next_page_number }}">Next</a></span> </li> {% endif %} </ul> {% else %} <h3>Your File Exam</h3> <p>File not yet available</p> {% endif %}

app / urls.py

urlpatterns = [ url( r''^$'', views.FileExamListView.as_view(), name=''file-exam-view''), ), ... ]