【问题标题】:Images not uploading in heroku app using django-zinnia blog图片未使用 django-zinnia 博客上传到 heroku 应用程序
【发布时间】:2014-11-21 13:20:23
【问题描述】:

我正在使用 zinnia 在 django 中实现一个博客应用程序。博客在本地服务器中完美运行,但是在 heroku 中部署时,图像没有被上传。

我的设置文件是这样的,

DEBUG = False
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, '..', 'static'),
)

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'media')
ZINNIA_UPLOAD_TO = 'media/uploads/zinnia'

【问题讨论】:

  • 什么时候'工头'可以上传.?
  • 是的。我可以在本地服务器上完美运行。

标签: python django heroku django-admin zinnia


【解决方案1】:

在 Heroku 的服务器上存储静态/媒体文件是有问题且不鼓励的。有一些变通方法,但使用替代方法来托管这些更容易。另外,当重新旋转测功机时,Heroku 上的文件将被删除。

最常用的解决方案是使用网络服务来存储您的文件。在我自己尝试直接在 Heroku 的服务器(包括 Zinnia)上收集静态和媒体文件时,图像会显示为损坏/丢失的链接。由于 Zinnia 的图像文件是通过 collectstatic 收集的(每次推送到 Heroku 时都会运行),这是预期的行为。

为了便于使用和提高性能,您应该从其他来源(例如 AWS S3)提供静态文件,详见此处-https://devcenter.heroku.com/articles/s3

请注意:Whitenoise library 是直接从 Heroku 提供静态/媒体资产的绝佳方式。它快速、易于设置且非常稳定。当您希望拥有大量文件时,它可能不是最好的,但对于一个相对较小的站点来说,它是豌豆和胡萝卜。

另请参阅- Serve static files on heroku using AWS S3 for django? http://agiliq.com/blog/2014/06/heroku-django-s3-for-serving-media-files/

【讨论】:

  • 我可以免费上传 s3 存储桶中的媒体文件吗?或者是否有任何免费服务可以从 heroku 直接上传?
【解决方案2】:

我需要 Amazon AWS 来长期做这件事。但我最初的错误是我没有包括这一行

MEDIAFILES_DIRS = (MEDIA_ROOT)

包含此内容后,我可以上传图片。但是在每次推送到 heroku 之后,这些图像都会丢失。

所以我不得不使用 Amazon ASW 来存储图像,这样即使在我推送到 heroku 之后我也可以查看媒体文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2014-01-12
    相关资源
    最近更新 更多