【问题标题】:Django : Display uploaded image with mediaDjango:使用媒体显示上传的图像
【发布时间】:2018-10-16 17:35:47
【问题描述】:

我想在我的模板中为每个对象显示uploaded picture。我遇到了一个问题,因为当我单击 picture url 时,media 路径出现错误。

我的模型中有:

class Publication(models.Model):
    ...
    cover = models.ImageField(upload_to='media/', verbose_name=_('cover page'))

然后,我在我的设置部分:

MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR + '/myapp/'

现在,在我的模板文件中,我这样显示图片:

{% if item.cover %}
    <td>
        <a href="{{item.cover.url}}" target="_blank">
            <img class="glyphicon glyphicon-home" src="{{item.cover.url}}" alt="{{item.cover}}">
        </a>
    </td>
{% else %}
    <td></td>
{% endif %}

模板页面地址为:http://localhost:8000/crud/publication/list/ 当我点击我的图片链接时,我得到:http://localhost:8000/crud/publication/list/media/media/couverture_qZQKLED.jpg

这是假的,我应该得到:

http://localhost:8000/media/couverture_qZQKLED.jpg

然后,我想用字形图标替换可见元素。

你能帮我吗?

在我的 urls.py 文件中,我有:

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【问题讨论】:

  • 不应该是MEDIA_URL = '/media/'吗?
  • @AhmedHosny 我如何才能显示我的字形图标,当我点击它时,它会在新标签中显示我的图片,并带有 blank ?您对/media 的评论有效
  • 如果您还没有这样做,请将其添加到 urls.py。 urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 我可以看到你已经提到它应该在新标签中显示图像。

标签: django


【解决方案1】:

settings.py 中媒体文件的正确配置

# Media files, uploaded by user
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

模板

<a href="{{item.cover.url}}" target="_blank">
    <!-- An alt tag in span makes no sense, so you can use title tag if you want. -->
    <span class="glyphicon glyphicon-home" title="{{item}}"></span>
    <!-- OR show item's str inside span -->
    <span class="glyphicon glyphicon-home">{{item}}</span>
</a>

【讨论】:

  • 你是对的!当我点击 glyphicon 时,如何用 glyphicon 替换图片并在新选项卡中显示图片?
  • 尝试从img 标记中删除src 属性。在我看来,使用 span 标签来显示 glyphicon 而不是 img
  • ?很乐意提供帮助。
【解决方案2】:

您已在图像字段中添加了 upload_to='media/', 这样它将在您的媒体根目录中再创建一个文件夹。 Django 已经在图像路径中进行了媒体处理。完整路径成为 媒体地址+文件夹路径

cover = models.ImageField(upload_to='other_folder_name', verbose_name=_('cover page'))

MEDIA_URL = '/media/'

因为它是相对路径,不以/开头

<a href="{{item.cover.url}}" target="_blank">
        <span class="glyphicon glyphicon-home" alt="{{item.cover}}"></span>
</a>

【讨论】:

  • 你是对的!当我点击 glyphicon 时,如何用 glyphicon 替换图片并在新选项卡中显示图片?
  • 你可以使用锚标签。锚标记的 url 将是图像 url。
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 2017-01-11
  • 2017-07-08
  • 1970-01-01
  • 2016-10-18
  • 2017-10-15
  • 2015-10-04
  • 2020-03-25
相关资源
最近更新 更多