繁体   English   中英

尽管加载了所有其他 static 文件,但 Django-tinymce 未在 Amazon S3 上加载

[英]Django-tinymce not loading on Amazon S3 despite all other static files loading

我一直在使用这个指南

https://www.codingforentrepreneurs.com/blog/s3-static-media-files-for-django/

为我网站的 static 文件使用 S3。

我有 TinyMCE 在本地工作,但是一旦我开始使用 S3 处理我的文件,它是唯一不会加载的部分,使用它的小部件根本不会出现。

在 Chrome 开发工具控制台中,我收到以下错误:

Failed to load resource: the server responded with a status of 403 (Forbidden)
tiny_mce.js?AWSAccessKeyId=A[ACCESKEY]&Signature=Ze0U3pre28m%2FD9x2ftvTQkXl0OI%3D&Expires=1558648014:1 

Failed to load: https://conucos-bucket.s3.amazonaws.com/static/assets/js/tiny_mce/plugins/autosave/editor_plugin.js

在 S3 上,我已将所有文件公开在 Bucket Public 中,并在 TinyMCE 中拒绝访问 2 个文件

static/assets/js/tiny_mce/plugins/media/langs/dv_dlg.js
/conucos-bucket/
static/assets/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js
/conucos-bucket/

rest 成功。

下面是我在settings.py中导入的配置文件

import datetime

AWS_GROUP_NAME = #REDACTED
AWS_USERNAME = #REDACTED
AWS_ACCESS_KEY_ID = #REDACTED
AWS_SECRET_ACCESS_KEY = #REDACTED

AWS_FILE_EXPIRE = 200
AWS_PRELOAD_METADATA = True
AWS_QUERYSTRING_AUTH = True

DEFAULT_FILE_STORAGE = 'conucos.aws.utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'conucos.aws.utils.StaticRootS3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'conucos-bucket'
S3DIRECT_REGION = 'us-east-1'
S3_URL = '//%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = '//%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME
MEDIA_ROOT = MEDIA_URL
STATIC_URL = S3_URL + 'static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

two_months = datetime.timedelta(days=61)
date_two_months_later = datetime.date.today() + two_months
expires = date_two_months_later.strftime("%A, %d %B %Y 20:00:00 GMT")

AWS_HEADERS = { 
    'Expires': expires,
    'Cache-Control': 'max-age=%d' % (int(two_months.total_seconds()), ),
}

AWS_QUERYSTRING_AUTH = True


这是我在使用 TinyMCE 的模板上加载 static

    {% load static %}
    <script type="text/javascript" src="{% static "assets/js/tiny_mce/tiny_mce.js" %}"></script>
    <script type="text/javascript" src="{% static "assets/js/tiny_mce/textareas.js" %}"></script> 

我如何加载 TinyMCE? 任何帮助都表示赞赏!

我可能来晚了一点,但也许我的回答会对以后来的人有所帮助。 我遇到了同样的问题,这就是我解决它的方法。

  1. 右键单击并查看页面源代码以查看该网站的代码
  2. 在顶部查看 JS 文件是如何加载的。 我的问题是访问 s3 存储桶的方式。 我删除了页面顶部的 {{form.media}} 并将其替换为我的 s3 存储桶中媒体文件位置的实际 url,如下所示:

“https://ams3.digitaloceanspaces.com/xxxxxxx/static/tinymce/tinymce.min.js” “https://ams3.digitaloceanspaces.com/xxxxxxx/static/django_tinymce/init_tinymce.js”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM