使用S3进行Django CMS Picture插件存储

时间:2014-07-13 07:54:56

标签: heroku amazon-s3 boto django-cms django-storage

我正在尝试将Django CMS项目部署到Heroku。媒体将通过Django Storages和Boto从S3提供。目前唯一的媒体包括Django CMS Picture插件(使用标准ImageField)和Aldryn Blog帖子(使用FilerImageField和easy_thumbnails)。

通过Django Filer将图像添加到博客帖子效果很好,但在创建Django CMS Picture插件时添加图像失败,出现500错误:

  

POST / en / admin / cms / page / edit-plugin / 3 / HTTP / 1.1
  主持人:192.168.1.104:8000   连接:保持活力
  内容长度:72567
  缓存控制:max-age = 0
  接受:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0.8
  来源:http://192.168.1.104:8000
  User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 35.0.1916.153 Safari / 537.36
  内容类型:multipart / form-data;边界= ---- WebKitFormBoundaryegTMPxZL74Wiukrg
  推荐人:http://192.168.1.104:8000/en/admin/cms/page/edit-plugin/3/
  Accept-Encoding:gzip,deflate,sdch
  接受语言:en-US,en; q = 0.8
  Cookie:django_language = en;的sessionid = wj7ayeia7rwggp​​xecatspe7lw5i12345; csrftoken = Pf342snoku6cdoRD6b9FCtxfqVQ12345

     

HTTP / 1.0 500内部服务器错误
  日期:太阳,2014年7月13日07:06:46 GMT
  服务器:WSGIServer / 0.1 Python / 2.7.3
  内容 - 语言:en
  到期日:Sun,2014年7月13日07:06:46 GMT
  变化:饼干
  Last-Modified:Sun,2014年7月13日07:06:46 GMT
  缓存控制:max-age = 0
  X-Frame-Options:SAMEORIGIN
  内容类型:text / html

图像已成功上传到S3,插件在CMS中创建,但显示为<Empty>。以下是我认为的相关设置:

'''
We use S3 as our media backend on Heroku, so set that up
'''
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'me'
AWS_SECRET_ACCESS_KEY = 'hunter2'
AWS_STORAGE_BUCKET_NAME = 'bucket'

'''
Adjust media URL to point directly to S3
'''
MEDIA_URL = 'http://bucket.s3.amazonaws.com/'

'''
Adjust thumbnail storage
'''
THUMBNAIL_DEFAULT_STORAGE = DEFAULT_FILE_STORAGE

此外,我可以以编程方式创建一个Picture插件,它工作正常:

df = File(f)
p = Picture(language=u'en', plugin_type=u'PicturePlugin', level=0, lft=1, rght=2, tree_id=3, placeholder=ph)
p.image.save(name='test.png', content=df)
p.save()

任何关于我做错事的想法都会受到高度赞赏,我被卡住了。

编辑1:感谢您的回复,mkoistinen,试图为您提供更多信息,但老实说我对这些内容如何组合感到有些困惑,所以我只是拍了截图。

插件创建表单:

表单处于错误状态一瞬间(我试图点击那个&#34;分享这个追溯......&#34;按钮没有成功):

图像存储到S3并创建了CMSPlugin(但不是图片):

回复为空,也不会出现任何JavaScript错误:

编辑2:此替换插件运行正常,不知道如何:

# djangocms_pic/cms_plugins.py

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool

from models import Pic

class PicPlugin(CMSPluginBase):
    model = Pic
    name = 'Pic'
    render_template = 'pic_plugin.html'

plugin_pool.register_plugin(PicPlugin)

# djangocms_pic/models.py

from django.db import models

from cms.models import CMSPlugin

class Pic(CMSPlugin):
    image = models.ImageField(upload_to = CMSPlugin.get_media_path)

# djangocms_pic/templates/pic_plugin.html

<img src="{{ instance.image.url }}" />

0 个答案:

没有答案