【问题标题】:Can't display image in Django template using DRF无法使用 DRF 在 Django 模板中显示图像
【发布时间】:2020-07-30 05:30:06
【问题描述】:

当模板在浏览器中呈现时,我上传的图像没有显示。 我已经像这样设置了我的媒体 url 模式:

urlpatterns = [
  # App routes
  ....
]

if settings.ENV == settings.DEV:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在项目设置中,我有这样的媒体配置:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

这是 index.html 模板的一部分,用于显示封面图片:

<div class="col-md-5" >
    <img src="{{ post.cover_image.url }}" class="rounded img-fluid"/>
</div>

当我运行服务器时,页面显示正常,但封面图像没有出现。它只显示了这一点:

有趣的是,我的上传成功并出现在项目的 media/images 目录中,终端日志显示 200 http 响应,但不知道为什么它不显示在浏览器中。我正在使用 Django Rest Framework,并为各个应用提供了模板。

这里是项目设置上下文处理器:

'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.template.context_processors.media',
            'django.template.context_processors.static',
            'django.contrib.messages.context_processors.messages',
        ],

我错过了什么吗?

【问题讨论】:

    标签: django django-rest-framework django-templates


    【解决方案1】:

    这里没有足够的信息来确定问题的原因。您可以按照以下步骤进行调查:

    1. 清除浏览器缓存并重新加载页面(以防您看到之前的测试导致的边框效果)。

    2. 1234563状态码)。
    3. 在浏览器中输入图片的网址,看看是否显示良好。如果是这样,则意味着您的 HTML/CSS 有问题(可能是因为“圆形 img-fluid”类)。

    4. 如果 2. 失败,则您下载的图像可能已损坏。您需要确定它是否在上传或下载过程中损坏。首先,检查上传的图片在服务器上是否正常,例如通过下载然后不使用 Django (SFTP...)。

    5. 如果服务器上的图像是好的,那么检查下载的图像。保存并尝试使用图像软件打开它。还要检查响应图像请求的标题(错误的 Content-Type?)和数据大小(使用浏览器的 Web 开发人员工具)。

    【讨论】:

    • 1.这不是缓存问题,因为我在其他浏览器上测试过并清除了缓存
    • 2.来源很好。测试图像正是我所期望的 3. 这很有趣。我检查了元素并转到图像路径。我没有看到图像,而是被定向到主页 4. 图像在上传过程中不会损坏,因为我可以在项目媒体文件夹中很好地查看它 5. 我可以通过复制链接来查看上传的图像我的编辑器进入浏览器。想知道我是否缺少 Django 中的另一个设置
    • @MaxRah 然后,您需要弄清楚为什么在获取图像 URL 时,Django 确定该 URL 与返回主页的 urlpatterns 中的某些内容相匹配。尝试在 urlpatterns 中逐行注释(媒体文件行除外)以查找错误的 URL 模式。
    猜你喜欢
    • 2012-05-15
    • 2020-03-03
    • 2020-08-20
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多