¡Hola a todos! Estoy comenzando una forma de programar django, así que a veces me confundo.
Estoy tratando de mostrar todos mis objetos de DB, pero cuando abro la página simplemente está vacía.
Hay contenido agregado y probé ListView anteriormente y funcionó para mí. Pero ahora necesito mostrar objetos como una cuadrícula y aquí hay un problema con este método.
¡Será muy agradecido por cualquier ayuda!
modelos.py
from django.db import models class Post(models.Model): title = models.CharField(max_length=140) body = models.TextField() date = models.DateField() image = models.ImageField(upload_to='bons_images/%Y/%m/%d') def __str__(self): return self.titlevistas.py
from django.shortcuts import render, render_to_response from django.template import RequestContext from django.views import generic from blog.models import Post def image(request): post = Post() variables = RequestContext(request, { 'post': post }) return render_to_response('blog/post.html', variables) # class IndexView(generic.ListView): # template_name = 'blog/blog.html' # context_object_name = 'all_posts' # # def get_queryset(self): # return Post.objects.all() def index(request): posts = Post.objects.all() return render(request, 'blog/blog.html', {'posts': posts})urls.py
from django.conf.urls import url, include from django.views.generic import ListView, DetailView from blog.models import Post from blog import views urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^(?P<pk>\d+)$', DetailView.as_view(model=Post, template_name='blog/post.html')), ]blog.html
{% extends 'base.html' %} {% block content %} {% if all_posts %} {% for post in all_posts %} <div class="container-fluid"> <div class="row"> <div class="col-sm-3 col-lg-4"> <div class="thumbnail"> <a href="/blog/{{ post.id }}"> <h5>{{ post.date|date:'Ymd' }} {{ post.title }}</h5> <img src="{{ post.image.url }}" style="width: 50%; height: 50%"/> </a> </div> </div> </div> </div> {% endfor %} {% endif %} {% endblock %}Y, por cierto, cómo es posible mostrar sus objetos como en una cuadrícula, no en una lista, usando Bootstrap, etc.
¡Gracias!
Estás iterando sobre algo llamado all_posts en tu plantilla. Pero tu vista no envía nada llamado all_posts ; solo envía posts . Necesitas usar nombres consistentes.