Estoy tratando de mostrar datos de un sitio web en HTML.
Creé una clase llamada Video en models.py de la siguiente manera:
class Video(models.Model): filename = models.CharField("File Name", max_length=100) title = models.CharField("Video Title", max_length=250)La base de datos se migra y puedo insertar datos en ella usando un formulario Django. He comprobado y hay datos en la base de datos.
Tengo el siguiente código en mi archivo de plantilla HTML, pero la página está vacía cuando se muestra y no muestra datos.
{% for video in Video %} <div class="row"> <div class="col-md-3"> <a href="{{ video.filename }}">{{ video.title }}</a> </div> </div> {% endfor %}¿Por qué esto no muestra ningún dato en la página HTML renderizada?
Editar:
Este es el código relevante de la vista:
def listvideos(request): """Renders the listvideos page.""" assert isinstance(request, HttpRequest) return render( request, 'app/listvideos.html', )Las plantillas solo pueden representar lo que les pasas. No está enviando nada llamado Video, por lo que no puede iterarlo.
return render( request, 'app/listvideos.html', {'Video': Video.objects.all()} ) Sin embargo, debe considerar si realmente desea llamar a su parámetro Video ; probablemente debería llamarse videos tanto aquí como en la plantilla.
(Y elimine esa afirmación. Para empezar, no tiene lugar en el código de producción; y en segundo lugar, la solicitud siempre será una HttpRequest, que es parte del contrato para una vista).