【问题标题】:Django serving static filesDjango 提供静态文件
【发布时间】:2014-07-25 20:25:18
【问题描述】:

我正在尝试配置我的 django 设置以在调试和生产模式下提供静态文件。我希望在生产模式下来自 S3,而在调试模式下来自本地安装。我的设置如下:

COMPRESS_ENABLED = not DEBUG
COMPRESS_PARSER = 'compressor.parser.LxmlParser'
COMPRESS_CSS_FILTERS = ['compressor.filters.cssmin.CSSMinFilter']
COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
COMPRESS_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'libs.storages.S3Storage.S3Storage'

AWS_ACCESS_KEY_ID = # Key
AWS_SECRET_ACCESS_KEY = # Secret

AWS_STORAGE_BUCKET_NAME = # Bucket

AWS_QUERYSTRING_AUTH = False

MEDIA_URL = '/media/'
if COMPRESS_ENABLED:
    from boto.s3.connection import SubdomainCallingFormat
    AWS_S3_CALLING_FORMAT = SubdomainCallingFormat()

    COMPRESS_OFFLINE = True
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

    # Path for all static files
    STATIC_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
    STATIC_ROOT = STATIC_URL
else:
    STATIC_ROOT = path.join(PROJECT_ROOT, '..', 'assets')
    STATIC_URL = '/static/'

除了一件我无法弄清楚的小事之外,我能够让一切正常工作。很多时候,我的 CSS 文件的背景 URL 为 /images/logo.png。文件夹 /images/ 存在于 S3 中,但对于我的本地,它需要是 /static/images/。我试图在最后将 S3 URL 设置为/static/,但它不起作用。还有什么我想念的吗?如何让 CSS 图像 URL 重定向到 /static/

【问题讨论】:

    标签: django amazon-s3 django-compressor


    【解决方案1】:

    我通读了s3boto.py的源代码。您可以设置以下属性:

    AWS_LOCATION = "static"
    

    该变量会在您的 s3 中创建一个 static 文件夹。其他属性应该是:

    STATIC_URL = 'https://%s.s3.amazonaws.com/static/' % AWS_STORAGE_BUCKET_NAME
    STATIC_ROOT = STATIC_URL
    

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 2014-12-22
      • 2021-07-08
      • 2012-12-16
      • 1970-01-01
      • 2014-03-13
      • 2021-12-02
      • 2019-10-24
      相关资源
      最近更新 更多