Проблемы с отображением изображений с помощью django

Я создаю блоггерский сайт, используя фреймворк django, и у меня возникают трудности с отображением изображений на динамических страницах. Вот мой код:

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)

в моем html:

<img class="img-fluid" src="{{post.cover_image.url}}" />

Я не знаю, что я делаю неправильно здесь, так как текст правильно отображается в моем коде динамически, просто не могу работать с изображениями.

Укажите "upload_to" для поля изображения, чтобы ваши изображения загружались туда.

cover_image = models.ImageField(upload_to="Folder")

Есть несколько вещей, которые могут идти не так. Вы используете сервер разработки, который поставляется вместе с Django, или рабочий сервер? Django по умолчанию не обслуживает медиа файлы во время разработки. Вам нужно включить его, поместив это в ваш url.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    ...]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

Кроме того, убедитесь, что у вас настроены MEDIA_ROOT и MEDIA_URL. Самый простой способ сделать это - добавить в файл settings.py

следующее
# Base url to serve media files
MEDIA_URL = '/media/'

# Path where media is stored
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

Если ни одно из этих решений не устраняет проблему, нам может быть полезно увидеть вывод вашего терминала, где запущен сервер, и/или как выглядит вкладка сети в ваших инструментах разработчика (убедитесь, что вы выбрали только изображения, чтобы было легче читать)

Вернуться на верх