媒体文件夹中的图像未显示 django 模板

Posted

技术标签:

【中文标题】媒体文件夹中的图像未显示 django 模板【英文标题】:Images from media folder is not displaying django template 【发布时间】:2018-10-15 01:49:29 【问题描述】:

我的媒体文件夹中有图像,我想显示它们,但 Django 不显示静态文件夹以外的图像。 在我的设置中

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static'),]
MEDIA_ROOT = BASE_DIR
MEDIA_URL = '/media/'

在我的 urls.py 中,我在 url 模式之后添加了这个

+ static(MEDIA_URL, document_root=MEDIA_ROOT)

在我的模板中

<img class="card-img-top" style="" src="result.object.thumbnail.url" ></a>               
   <p>result.object.thumbnail.url</p>

它显示了正确的路径但没有显示图像,我无法找出问题所在。谢谢

【问题讨论】:

MEDIA 文件夹是否放置在您项目中的正确位置?路径有效吗? 先生的媒体文件夹放在BASE_DIR,是的,路径是正确的! 检查我的答案,以防你的项目根目录中有media forder 【参考方案1】:

您的MEDIA_ROOT 具有项目根目录的路径。你必须加入它,你的media 的目录。 (我想media/ 是您上传所有媒体的目录名称) 我认为你应该有这样的MEDIA_ROOT

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

【讨论】:

抱歉,这个我已经试过了,在你回答后我又试了一次,但还是不行 进入 Django admin,找到你的模型实例,尝试在那里显示图像,并显示 URL 中显示的path 网址是 - /media/products/media/images/RAJASTHAN/SIKAR/332001/panshar8688/new/1632140276/thumbnail/1632140276.jpg 在 admin 中显示图片 url 但点击后显示 KeyError 错误在这里很明显,/media/products/media/images【参考方案2】:

MEDIA_ROOT 有您项目的根路径。 MEDIA_URL 必须正确。检查以下 setting.py 你的项目

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

urls.py 项目

 urlpatterns = [
                  url(r'^admin/', admin.site.urls),
                  # url('', include('app1.urls')),
                  url('home/', myapp_views.index)
              ] + static(settings.MEDIA_URL, 
             document_root=settings.MEDIA_ROOT)

过去 5 天我遇到了同样的错误,请遵循 django 文档、许多教程但对我没有任何帮助,但最终我找到了解决方案

我在主页上显示 index.html 意味着我没有在我的应用程序和项目 url 文件的 url 中提供任何端点

app/urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('', 'views.index', name='index page'),
]

project/urls.py

urlpatterns = [
                  url(r'^admin/', admin.site.urls),
                  # url('', include('app1.urls')),
                  url('', myapp_views.index)
              ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

其余代码保持不变,我在两个文件中更改了以下内容

app/urls.py

    url('home/', 'views.index', name='index page'),

project/urls.py

 url('home/', myapp_views.index)

这对我有用。如果也适合您,请接受答案

【讨论】:

【参考方案3】:

这是我运行 wagtail 的 django v3.2 的一部分 HTTP 日志。看起来 django 试图告诉我丢失的媒体在哪里,但无法告诉我。因为这是一个带有“特色页面”的图库子图像的丛林页面,所以我的浏览器中的视图源不会显示图像文件尝试,但我假设它与配置错误的 MEDIA_ROOT 的 OP 的问题相同。奇怪的是,当我在 wagtail 管理员中打开子页面时,在页面的链接图像中没有看到任何错误。任何人都知道为什么丢失的图像不会冒泡到 HTTP 日志中,或者是什么导致“媒体/未找到”替换导致 404 的“真实”项目?

[25/Aug/2021 20:28:53]“GET /static/wagtailadmin/images/bg-dark-diag.svg HTTP/1.0”200 700

未找到:/media/not-found [25/Aug/2021 20:29:18] “GET /media/not-found HTTP/1.0”404 3252

未找到:/media/not-found [25/Aug/2021 20:29:18]“GET /media/not-found HTTP/1.0”404 3252

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起更多的关注。

以上是关于媒体文件夹中的图像未显示 django 模板的主要内容,如果未能解决你的问题,请参考以下文章

模板提供了错误的媒体目录路径,Django 找不到图像

媒体文件未在模板中正确加载 (HTML <img>)。静态文件/图像正常工作

媒体文件未在 DEBUG=False Django 2.2.6 中显示

Django - 为用户上传的媒体文件提供服务

媒体文件不提供给 Django 中的模板

Django3.0:来自数据库的图像在 debug=False 后未显示