【问题标题】:Django imageField url on htmlhtml上的Django imageField url
【发布时间】:2017-07-10 09:07:32
【问题描述】:

我有这个等级:

-mega_series
   -mega_series
   -series
      -models.py
      -views.py
      ...
   -manage.py
   -media
      -covers
   -static

MEDIA_URL 和 MEDIA_ROOT 如下:

MEDIA_ROOT = '/Users/lechucico/Documents/mega_series/media/'
MEDIA_URL = 'media/' 

在我这样存储图像的模型上:

class Serie (models.Model):
   serie_cover = models.ImageField(upload_to='covers')
   serie_name = models.CharField(max_length=100)

通过管理站点上传的图像正确地转到路径:mega_series/media/covers/

这就是我通过 html 访问它的方式:

<img src="{{serie.serie_cover.url}}" width="150" height="250" />

我得到的结果网址如下:

http://127.0.0.1:8000/media/covers/juego_de_tronos.jpg

为什么图片没有出现在 html 中?

谢谢。

【问题讨论】:

  • settings.py 中的 MEDIA_ROOT 和 MEDIA_URL 是什么
  • 尝试使用serie.serie_cover.url
  • @Niyojan - 可能想把它作为答案,因为这是最可能的原因
  • @Niyojan 我没有 MEDIA_ROOT 和 MEDIA_URL。 serie.serie_cover.url 产生相同的结果。

标签: django image django-models


【解决方案1】:

您需要定义MEDIA_ROOT,如提到的here

来自 Django 官方文档:

urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

你也可以看看this

【讨论】:

  • 我已经按照您在链接上给我的说明编辑了帖子。我想我现在很接近了,但它仍然不起作用。这次我做错了什么?
  • 好吧,这个网址对我来说似乎是合法的,浏览器应该加载它。尝试检查浏览器控制台日志(谷歌浏览器的F12 键)是否存在加载错误。也尝试只使用serie.serie.name
  • 我试过了:serie.serie.name, serie.serie.url, serie.serie.path 没有人能用。加载页面时终端控制台显示以下内容:“GET /Users/lechucico/Documents/mega_series/media/covers/modern_family.jpg HTTP/1.1”404 3218,未找到:/Users/lechucico/Documents/mega_series/media/covers/ the_black_list.jpg。太罕见了,因为图片在那个路径上
  • 我忘了在 url.py (+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)) 上添加静态。为什么需要添加这个?
  • 这是一个辅助函数,因此 django urls 列表也包含我们的媒体 url,我们可以探索它们。
猜你喜欢
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2016-03-15
  • 2016-02-10
  • 2013-01-10
相关资源
最近更新 更多