Django stati c url с цифровыми пространствами океана - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть дроплет на digitalocean, который по большей части работает отлично, однако я включил опцию cdn в пространствах digitalocean (аналогично хранилищу aws s3) и при попытке загрузить файлы c stati с помощью cdn URL-адрес, я не могу заставить работать URL-адрес корректно, поэтому я подозреваю, что мне не хватает очевидного?

Например, когда я изменяю STATIC_URL в настройках на cdn, в источнике веб-страницы не видно никаких изменений? Если я изменю AWS_S3_ENDPOINT_URL и MEDIA_ENDPOINT_URL, то источник действительно изменится, но файлы не найдены, и, как можно догадаться, collectstati c больше не работает, поэтому я предполагаю, что AWS_S3_ENDPOINT_URL & MEDIA_ENDPOINT_URL нужно оставить как есть, и мне просто нужно убедиться, что используется static_url?

Я где-то читал, что не рекомендуется менять шаблоны с {% stati c .... на {% static_url, так что не сделали этого, это что-то я должен обновить или нет?

Настройки:

AWS_S3_ENDPOINT_URL     = 'https://nyc3.digitaloceanspaces.com'
MEDIA_ENDPOINT_URL      = 'https://nyc3.digitaloceanspaces.com/media/'
AWS_STORAGE_BUCKET_NAME = 'mysitestaging'

#STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# if False it will create unique file names for every uploaded file
AWS_S3_FILE_OVERWRITE = False
STATICFILES_STORAGE = 'mysite.settings.storage_backends.StaticStorage'
DEFAULT_FILE_STORAGE = 'mysite.settings.storage_backends.MediaStorage'

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}


# the sub-directories of media and static files
STATIC_ROOT = 'static'
MEDIA_ROOT = 'media'
AWS_DEFAULT_ACL = 'public-read'

BUCKET_ROOT =   '{}/{}/'.format(AWS_S3_ENDPOINT_URL, STATIC_ROOT)

# the regular Django file settings but with the custom S3 URLs
STATIC_URL = '{}/{}/'.format('https://cdn.mysite.com', STATIC_ROOT)
MEDIA_URL = '{}/{}/'.format('https://cdn.mysite.com', MEDIA_ROOT)

Исходное представление возвращает:

https://nyc3.digitaloceanspaces.com/mysitestaging/static/img/apple-touch-icon.png?AWSAccessKeyId=37FLLPUJLEUO5IG7R4GQ&Signature=eof5%2BZvHPo%2FRSzvKQsrobXkcOZ0%3D&Expires=1586789962

cdn.mysite.com

это псевдоним из

mysitestaging.nyc3.cdn.digitaloceanspaces.com.

My storage_backends.py:


import os
from storages.backends.s3boto3 import S3Boto3Storage
from my_site.settings import core_settings

class StaticStorage(S3Boto3Storage):
    location = core_settings.STATIC_ROOT

class MediaStorage(S3Boto3Storage):
location = core_settings.MEDIA_ROOT

1 Ответ

0 голосов
/ 13 апреля 2020

Хорошо, понял это, фактически перечитав документы:

https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html

Сразу добавилось следующее:

AWS_S3_CUSTOM_DOMAIN = 'cdn.mysite.com'

Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...