簡體   English   中英

django 管理員 static 文件通過 `collectstatic` 上傳到 s3,但在本地運行時不提供

[英]django admin static files are uploaded to s3 via `collectstatic` but not served when running locally

我正在按照本教程在 s3 上存儲 static 和媒體文件。 這是我在settings.py中的 static 文件配置的樣子:

USE_S3 = os.getenv('USE_S3') == 'TRUE'
## AWS Configuration
if USE_S3:
    # aws settings
    AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
    AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
    AWS_DEFAULT_ACL = None # differs from the tutorial because the bucket is private
    AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
    AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
    # s3 static settings
    AWS_LOCATION = 'static'
    STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
else:
    STATIC_URL = '/staticfiles/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

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

MEDIA_URL = '/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles'

設置完所有環境變量后,我運行python manage.py collectstatic ,我可以看到文件已成功上傳到我的 s3 存儲桶。 即我在 s3 上看到帶有 fonts、css 等的static/admin/目錄。

但是,當我在本地運行服務器時,管理面板缺少所有 css。 我不確定為什么 django 找不到管理員 static 文件,因為collectstatic有效。 我在這里這里這里找到了其他幾個教程,但我找不到我所缺少的。 對於他們所有人來說,運行collectstatic后似乎應該“正常工作”......我忘記了什么?

注意USE_S3 == False時管理面板很好

所以 s3 存儲桶中的對象不是公開的。 我公開了這些資產,現在它正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM