Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
¿Cómo convierto un método de vista en una vista de lista genérica?

Tengo este método en la página de visualización. Funciona bien y muestra todo correctamente, pero quiero convertirlo en una vista de lista genérica para poder aplicarle la paginación.

Aquí está la función: `

 #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})

Así que seguí algunos tutoriales y terminé con esto:

 #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()

Aunque se compila sin ningún error, cuando renderizo la página, el objeto de contexto no se renderiza. ¡Su ayuda es muy apreciada! Gracias

EDITAR (13-ABR-17): ¡Gracias chicos! Finalmente funcionó con algunas pequeñas modificaciones.

 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
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

urls.py en urls.py desde su aplicación django, debe incluir una url que haga referencia a sus vistas e incluir este urls.py en su proyecto django principal urls.py.

 #urls.py from django.conf.urls import url from .views import IndexView urlpatterns = [ url(r'^path/$', IndexView.as_view(), name="index"), ]

Luego, en sus vistas.py anule la variable paginate_by

 #views.py class IndexView(ListView): template_name = 'index.html' context_object_name = 'home_list' queryset = Artist.objects.all() paginate_by = 10 # Number of objects for each page 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

Finalmente en su index.html agregue la paginación {% pagination_for page_obj %}

 {% block content %} <!--some content --> <!--begin paginator --> {% pagination_for page_obj %} <!--end paginator--> {% endblock %}
about 4 years ago · Santiago Trujillo Denunciar

0

Su get_context_data() necesita devolver el contexto. Entonces, si este es su código exacto, debe agregarle contexto de retorno

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda