【问题标题】:Django, browser display filename instead of the pictureDjango,浏览器显示文件名而不是图片
【发布时间】:2019-05-29 11:10:07
【问题描述】:

我缺少一些元素来显示用 Django 创建的博客上的每个帖子所附的图片,而不是图片文件名。

这类问题的许多解决方案是:

<img src="{{Object.picture.url}}"/>

在我尝试过的模板上:

1

<img src="{{ posts.title_picture.url }}"/>

2

<img src="{{title_picture.url}}"/>

分别在浏览器上显示:

1.

pictureforpost1.png

2.

图片

型号:

class Post(models.Model):
    title = models.CharField(max_length=255, blank=True, null=True)
    title_picture = models.FileField(blank=True,null=True)

查看:

class IndexView(ListView):
    model = Post
    context_object_name = 'posts'

似乎 Django 正在查找文件。它只是不显示图片。

****感谢以下答案的解决方案:****

变了

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

to 

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

并添加以下内容

urls.py

urlpatterns = [
   ...
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
# when served with STATIC_URL and STATIC_ROOT instead it 
# is not working so check difference in MEDIA and STATIC.

总的来说,我缺乏(现在仍然:))关于上传和显示静态文件的基本知识。

谢谢。

【问题讨论】:

  • 是的,因为您没有给出将文件上传到模型中媒体文件夹的任何路径。因此,只有文件名保存在数据库中,而不是文件。查看如何上传图片并在django中显示

标签: django django-templates


【解决方案1】:

当您为表 Post 创建新记录时,您必须上传图像文件,因此如果您设置媒体 url,它将存储在指定位置。 尝试在 settings.py 文件中设置MEDIA_ROOTMEDIA_URL 例如。

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

您可以在django documentation看到详细信息。

【讨论】:

  • 请在编辑部分查看解决方案。浏览了一些 django 教程,并且没有在任何地方看到任何正确解释的媒体或静态内容。谢谢。
【解决方案2】:

settings.py:

'context_processors': [
                ...
                'django.template.context_processors.media',
                ...
            ],

模板:

<img src="{{ MEDIA_URL }}{{title_picture.url}}"/>

【讨论】:

    【解决方案3】:

    您必须使用models.ImageField() 而不是models.FileField()。 并且必须使用 pip 安装 'Pillow' 包。

    【讨论】:

      【解决方案4】:

      从代码的外观来看,您试图从一组帖子中获取图像,而不仅仅是一个帖子。

      尝试只显示其中一篇文章,如果下面的语法不起作用,您可以使用 for 循环遍历您的集合。

      <img src="{{ posts.first.title_picture.url }}"/>
      

      【讨论】:

        猜你喜欢
        • 2012-03-27
        • 2011-05-04
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 2011-09-18
        • 1970-01-01
        • 2014-07-16
        • 2015-11-11
        相关资源
        最近更新 更多