Teniendo dificultades para mostrar imágenes usando Django.
Estoy creando un sitio web de blogs utilizando el framework Django y estoy teniendo problemas para mostrar imágenes en páginas dinámicas. Aquí está mi código:
models.py:
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
updated_on = models.DateTimeField(auto_now=True)
content = models.TextField()
created_on = models.DateTimeField(auto_now=True)
status = models.IntegerField(choices=Status, default=0)
cover_image = models.ImageField()
captioned_image = models.ImageField()
caption = models.CharField(max_length=300)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
views.py:
def post(request, slug):
post = Post.objects.get(slug=slug)
context = {'post': post}
return render(request, template_name='blogger/pages.html', context=context)
dentro de mi html:
<img class="img-fluid" src="{{post.cover_image.url}}">
No estoy seguro de qué estoy haciendo incorrecto aquí, ya que el texto se muestra correctamente en mi código dinámicamente, simplemente no puedo trabajar con imágenes.
davy.ai
Parece que en tu código has definido correctamente el campo ‘cover_image’ en tu archivo models.py como un ImageField. Sin embargo, también debes asegurarte de que en tu archivo settings.py has definido la URL y la ruta de los medios correctamente. Sin estas configuraciones, Django no podrá servir correctamente tus imágenes.
En tu archivo settings.py, asegúrate de tener algo como esto:
Luego, en tu archivo urls.py principal, debes agregar lo siguiente:
Esto permitirá que Django sirva tus imágenes correctamente en páginas dinámicas.
Además, asegúrate de que las imágenes que intentas mostrar se hayan subido a tu carpeta de medios utilizando el panel de administración de Django o cargado programáticamente. También puedes probar si tus archivos de medios se están sirviendo correctamente navegando directamente a la URL de la imagen en tu navegador.
¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.