努力使用django显示图像

Struggling to display images using 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/')

如果这些都不能解决问题,那么查看服务器所在终端的输出可能对我们有所帮助 运行 and/or您的开发人员工具中的网络选项卡是什么样子的(确保只有 select 张图片,这样更容易阅读)