python - Django Compressor、S3 和 SASS,编译文件未上传

标签 python django amazon-s3 django-compressor

我正在尝试使用 Amazon s3 和 SASS 设置 Django Compressor,但我遇到了这个问题。

因此,这些是 django 压缩器的设置:

########## STATIC FILE CONFIGURATION
# See: https://docs.djangoproject.com/en/dev/ref/settings/#static-root
STATIC_ROOT = normpath(join(SITE_ROOT, 'static'))

# See: https://docs.djangoproject.com/en/dev/ref/settings/#static-url
STATIC_URL = '/static/'

# See: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
STATICFILES_DIRS = (
    normpath(join(SITE_ROOT, 'assets')),
)
COMPRESS_CSS_FILTERS = [
    #creates absolute urls from relative ones
    'compressor.filters.css_default.CssAbsoluteFilter',
    #css minimizer
    'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_OUTPUT_DIR = '' #fixes bug with absolute urls
COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'sass --scss --compass {infile} {outfile}'),
    ('text/x-sass', 'sass --compass {infile} {outfile}'),
)
DEFAULT_FILE_STORAGE = 'devfest.storage.CachedS3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE

AWS_ACCESS_KEY_ID = get_env_setting('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = get_env_setting('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = 'asd'

COMPRESS_OFFLINE = True
COMPRESS_ENABLED = True
COMPRESS_URL = 'https://{}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME)
COMPRESS_ROOT = STATIC_ROOT

这是调用文件的模板部分

{% compress css %}
<link rel="stylesheet" href="{% static 'css/normalize.css' %}">
<link rel="stylesheet" type="text/x-sass" href="{% static 'css/main.sass' %}">
<link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}">
{% endcompress css %}

问题是压缩文件没有上传,因为它们被放在一个专门的文件夹中(只上传 Assets 中的文件)

» tree static/                                                                                                                                                                                
static/
├── css
│   └── 46086ae5ebb4.css
└── manifest.json

我做错了什么吗?

最佳答案

以这种方式修复:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'devfest.storage.CachedS3BotoStorage'
COMPRESS_STORAGE = STATICFILES_STORAGE

AWS_ACCESS_KEY_ID = get_env_setting('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = get_env_setting('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = 'asd'
AWS_QUERYSTRING_AUTH = False

COMPRESS_OFFLINE = True
COMPRESS_URL = 'https://{}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME)
COMPRESS_ROOT = STATIC_ROOT

我添加了 AWS_QUERYSTRING_AUTH = False,因为它为每个页面重新加载创建了不同的 url。

关于python - Django Compressor、S3 和 SASS,编译文件未上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351583/

相关文章:

javascript - Django 不应用链接的 js 和 css

python - 由于 pip 中的 numpy NameError,无法安装 mdfreader 版本 3

python - 使用 django GeoIP 和 MaxMind 数据库

django - Webpack - 关闭对/sockjs-node/info 的请求或指定不同的端口

ruby-on-rails - 用于存储桶中 Ruby 访问文件夹的 aws-sdk

python - 时间戳对象没有属性 dt

python - 从代码中禁用pyserial中的DTR

django - Vagrant - 如何从主机访问 guest postgres 服务器

python - 使用 Django-storages 分段上传到 S3

Flutter 与 AWS 集成(带或不带 Amplify)