【问题标题】:How to show django ImageField in browser URL如何在浏览器 URL 中显示 django ImageField
【发布时间】:2017-10-30 13:41:02
【问题描述】:

我有一个网络抓取应用程序,它从网站下载图像并将其存储在我的一个模型的 ImageField 中。

models.py

class Article(models.Model):
    title = models.CharField('Title', max_length=300)
    url = models.CharField('URL', max_length=200)
    hero_image = models.ImageField(upload_to='pictures', max_length=255)

我的hero_image 字段在我的项目中如下所示:“http://localhost:8000/media/pictures/gettyimages-585288019.jpgw210h158crop1quality85stripall

并且图片存储在myproject/myproject/pictures:

myproject
├── myproject
│   ├── settings.py
├── pictures
├── manage.py

当我点击上面的示例链接时,我会自动下载图片,但我想在浏览器中显示图片。

到目前为止我做了什么

myproject/urls.py

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

settings.py

MEDIA_URL = '/media/'

有很多类似于我关于 SO 的问题的主题,但我已经阅读了很多,但仍然找不到似乎可以帮助我解决问题的主题。

【问题讨论】:

    标签: python django python-3.x


    【解决方案1】:

    当我点击上面的示例链接时,我会自动下载图片,但我想在浏览器中显示图片。

    这是由网络服务器决定的。如果您设置 HTTP 标头Content-Disposition: inline,它是一个指示网络浏览器在浏览器中打开图像而不是将其视为文件下载。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

    大多数网络服务器(如 Apache 或 Nginx)会默认为所有图像文件设置此标头。

    如果您想将Content-Disposition 标头添加到由runserver 开发服务器提供的文件中,您可能必须覆盖默认方法。有关详细信息,请参阅此问题。

    django dev server, adding headers to static files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多