这在本地开发中托管我的静态文件时有效。现在我在我的 Dokku 服务器上托管存储在 DigitalOcean Spaces 中的静态和媒体文件。
我在我的模型中使用 django-ckeditor 作为 RichTextfield
class Resume(models.Model):
headline = models.CharField(verbose_name='Headline', max_length=120)
about = RichTextField(verbose_name='About Me')
user = models.ForeignKey(get_user_model(), on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now_add=True, verbose_name='Created At')
modified_at = models.DateTimeField(auto_now=True, verbose_name='Modified At', null=True, blank=True)
在我的 settings.py 中,我认为我已经定义了 Django-storages 运行所需的更多内容。不确定是否需要定义 AWS_QUERYSTRING_AUTH。尝试了两种方法,然后决定让我的存储桶对公众可读
AWS_ACCESS_KEY_ID = os.getenv('SPACES_ACCESS_KEY_ID') # access key
AWS_SECRET_ACCESS_KEY = os.getenv('SPACES_SECRET_ACCESS_KEY') # secret
AWS_STORAGE_BUCKET_NAME = os.getenv('SPACES_BUCKET_NAME')
AWS_S3_REGION_NAME = 'sfo3'
AWS_S3_ENDPOINT_URL = f'https://{AWS_S3_REGION_NAME}.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
AWS_DEFAULT_ACL = 'public-read'
# s3 static settings
STATIC_LOCATION = 'static'
STATIC_URL = f'{AWS_S3_ENDPOINT_URL}/{STATIC_LOCATION}/'
STATICFILES_STORAGE = 'config.custom_storages.StaticStorage'
# s3 public media settings
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'{AWS_S3_ENDPOINT_URL}/{PUBLIC_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'config.custom_storages.MediaStorage'
AWS_QUERYSTRING_AUTH = False # ckeditor with AWS
在控制台中,我可以看到在管理页面上没有加载 2 个资源。
- 配置.js
- en.js
两者都来自 ckeditor/ckeditor 文件夹,还有许多其他脚本可以从同一位置成功加载。我检查了我的空间文件夹,文件确实存在相同的内容。