【问题标题】:Django Collectstatic with AWS S3 not copying correct static and media files带有 AWS S3 的 Django Collectstatic 未复制正确的静态和媒体文件
【发布时间】:2017-05-02 21:48:02
【问题描述】:

我正在尝试将我的所有静态和媒体文件复制到 S3 存储桶。不幸的是,尽管我的 settings.py 文件中提供了我的媒体根目录和静态根目录....

DEFAULT_FILE_STORAGE = 'jeffrey.aws_storage_classes.MediaStorage'
AWS_ACCESS_KEY_ID = 'keyhere'
AWS_SECRET_ACCESS_KEY = 'secretkeyhere'
AWS_STORAGE_BUCKET_NAME = 'bucketname'
STATICFILES_STORAGE = 'jeffrey.aws_storage_classes.StaticStorage'

AWS_S3_DOMAIN = "%s.s3.amazonaws.com" % AWS_STORAGE_BUCKET_NAME
STATIC_URL = "https://%s/static/" % AWS_S3_DOMAIN
MEDIA_URL = "https://%s/media/" % AWS_S3_DOMAIN

MEDIA_ROOT = u'/home/namehere/mysite/media'
STATIC_ROOT = u'/home/namehere/mysite/static'

....我的 django contrib 文件夹中的文件似乎被复制了,而我在静态和媒体文件夹中的文件没有。下面是我的 bash 控制台:

Type 'yes' to continue, or 'no' to cancel: yes
Copying '/usr/local/lib/python2.7/dist-        packages/django/contrib/admin/static/admin/css/fonts.css'
Copying '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/icon-addlink.svg'
Copying '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/icon-no.svg'
Copying '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/inline-delete.svg'
....
....
Copying '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg'
Copying '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg'
61 static files copied.

【问题讨论】:

    标签: django amazon-s3 collectstatic


    【解决方案1】:

    我认为问题出在您的 INSTALLED_APPS 设置上。

    从 django contrib 文件夹中复制文件并没有错 - 如果您的 INSTALLED_APPS 设置中有“django.contrib.admin”,那么它会复制上面列出的静态文件。 (这是 Django 管理站点)。

    如果您的应用未在 INSTALLED_APPS 中列出,那么它将跳过从您的应用文件夹中收集静态文件。通过从此设置中删除我的应用程序名称,我设法准确地重现了您的问题,毫无疑问,它突然只从 django contrib 复制文件并跳过了我的应用程序静态文件。 因此,即使您的问题结果不同,这也会产生与您描述的相同的效果。

    示例:在 settings.py 中,您需要确保您拥有如下所示的内容:

    INSTALLED_APPS = [
        # Add your apps here to enable them
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'storages',                     #Amazon S3
        'myapp',
    ]
    

    请注意,“myapp”将是您应用的任何名称。

    【讨论】:

      猜你喜欢
      • 2012-10-29
      • 2020-11-15
      • 2017-11-25
      • 2020-04-22
      • 2018-07-07
      • 1970-01-01
      • 2015-01-02
      • 2021-06-19
      • 2019-08-27
      相关资源
      最近更新 更多