我目前正在使用django压缩器和django存储来运行s3的静态媒体.我的文件如下:
根据文档我的存储空间是:
from django.core.files.storage import get_storage_class
from storages.backends.s3boto import S3BotoStorage
class CachedS3BotoStorage(S3BotoStorage):
"""
S3 storage backend that saves the files locally, too.
"""
def __init__(self, *args, **kwargs):
super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
self.local_storage = get_storage_class(
"compressor.storage.CompressorFileStorage")()
def save(self, name, content):
name = super(CachedS3BotoStorage, self).save(name, content)
self.local_storage._save(name, content)
return name
Run Code Online (Sandbox Code Playgroud)
我的设置是:
# S3 Storage Section
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
# AWS_S3_SECURE_URLS = False #turns off https for static files (necessary)
# Used …Run Code Online (Sandbox Code Playgroud) 我在我的小网站上使用django压缩器,我不想在图像上使用查询字符串.例如images/header.png?9e1ed2cd7d15
有没有办法禁用它?
我正在努力使django压缩工作,但我相信它不起作用因为我的{% static %}使用.
我的模板是(我正在使用pyjade,但无关紧要):
- load staticfiles
- load compress
| {% compress css %}
link(rel="stylesheet", href="{% static 'less/bootstrap.css' %} ")
link(rel="stylesheet", href="{% static 'timepicker/css/bootstrap-timepicker.min.css'%}")
link(rel="stylesheet", href="{% static 'leaflet/addons/locatecontrol/L.Control.Locate.css' %} ")
link(rel="stylesheet", href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css")
link(href='//api.tiles.mapbox.com/mapbox.js/v1.3.1/mapbox.css', rel='stylesheet')
| {% endcompress %}
Run Code Online (Sandbox Code Playgroud)
还是我的settings.py的一部分:
PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, '../static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'media'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = "staticfiles.storage.StaticFileStorage"
INSTALLED_APPS = (....,'compressor',....)
Run Code Online (Sandbox Code Playgroud)
即使我$ …
我想使用 django_compressor 但它在我的生产环境中不起作用。
在开发 ( DEBUG=True) 中,它正在工作并创建了.sass-cache&CACHE文件夹。
我的settings.py是
DEBUG = False
TEMPLATE_DEBUG = False
INSTALLED_APPS = (
...,
'django.contrib.staticfiles',
'compressor',
'myapp',
)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'com.app.static')?
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_PRECOMPILERS = (
('text/x-scss', 'sass --scss {infile} {outfile}'),
)
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
scss 文件将模板目录放在 app.scss 文件中。
{% load staticfiles %}
{% load compress %}
<html> …Run Code Online (Sandbox Code Playgroud) 我使用django_compressor来压缩我的js和css文件.它成功创建组合文件.但是这个应用程序也允许压缩文件.要启用此功能,我创建了
COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage'
Run Code Online (Sandbox Code Playgroud)
在我的settings.py中.在压缩器工作目录中,现在有用于css和js的gzip文件.但是在用firebug检查html后,看起来gzip文件在渲染过程中不会出现.我该怎么改变它?
我是Django的新开发人员,我想在我的虚拟项目中使用一些CoffeeScript.但是,关于这个主题的文档并不好,我想从专家那里了解哪个是最好的选择.
我正在寻找像压缩机这样的可能性,但它仍然很困惑.我真的很感激一些建议.
提前致谢.
我们让用户将自己的自定义css/less上传到我们的django应用程序.
我们所有的css/less文件都是由django_compressor "on-the-fly" 压缩的.
最初部署应用程序时,所有css文件都将移动到该collect-static目录.
当用户上传自定义css样式时,它们会替换collect-static目录中较少的文件之一.
问题是只有在重新加载apache时才会出现更改,因此django-compressor会生成一个新的css文件.
有没有办法强制django-compressor重新生成它的编译和缓存文件?触发sudo services apache2 reloaddjango应用程序级别我感到不舒服.
我已经设置了一个AWS S3存储桶,以便使用应用程序django-storage在远程CDN中传输我的静态文件,一切正常,直到我尝试压缩我的静态文件,然后使用django_compressor上传到S3.
我根据django-storages的django_compressor文档设置了所有变量(https://django_compressor.readthedocs.org/en/latest/remote-storages/index.html)
我使用'manage.py collectstatic'上传了S3中的所有文件,然后:
当我'manage.py compress'时,我收到此错误:
CommandError: An error occured during rendering ../templates/base.html: 'https://my_bucket.s3.amazonaws.com/css/bootstrap.2.3.1.css' isn't accessible via COMPRESS_URL ('https://my_bucket.s3-external-3.amazonaws.com/') and can't be compressed
Run Code Online (Sandbox Code Playgroud)
我的设置有什么问题?
这是我的django-storages和django_compressor的settings.py配置:
COMPRESS_URL = 'https://mybucket_name.s3-external-3.amazonaws.com/'
STATIC_URL = COMPRESS_URL
DEFAULT_FILE_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXX'
AWS_SECRET_ACCESS_KEY = 'XXX'
AWS_STORAGE_BUCKET_NAME = 'mybucket_name'
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
STATICFILES_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
COMPRESS_OFFLINE = True
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
我有 python virtualenv 并尝试安装它抛出的nodeenv
"no python virtualenv is available"
在我激活的 python 虚拟环境中 . bin/activate
我运行以下命令
pip install nodeenv
nodeenv -p
Run Code Online (Sandbox Code Playgroud)
它会抛出错误...我目前正在尝试使用 django-compressor 安装 less
我正在使用django-compressor和django-storage来在S3上提供我的压缩文件(使用这些说明:http://django_compressor.readthedocs.org/en/latest/remote-storages/#using-staticfiles).它在运行"compress"管理命令后最初工作得很好,但大约一小时后,压缩的css和js文件返回403 Forbidden错误,即使我没有对文件进行任何更改.我似乎无法隔离问题,所以任何帮助将不胜感激.
以下是我使用的设置:
COMPRESS_ENABLED = True
COMPRESS_URL = "http://mybucket.s3.amazonaws.com/"
COMPRESS_STORAGE = 'sm.storage.CachedS3BotoStorage'
COMPRESS_YUI_BINARY = os.path.join(PROJECT_ROOT, 'jars/yuicompressor-2.4.7.jar')
COMPRESS_CSS_FILTERS = ['compressor.filters.yui.YUICSSFilter',
'compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_JS_FILTERS = ['compressor.filters.yui.YUIJSFilter',]
COMPRESS_OFFLINE = True
STATICFILES_STORAGE = COMPRESS_STORAGE
STATIC_URL = COMPRESS_URL
STATIC_ROOT = '/path/to/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' # I'm using this for uploaded media
AWS_ACCESS_KEY_ID = 'myaccesskey'
AWS_SECRET_ACCESS_KEY = 'mysecretkey'
AWS_STORAGE_BUCKET_NAME = 'mybucket'
AWS_S3_FILE_OVERWRITE = True
AWS_HEADERS = {
'Cache-Control': 'public, max-age=31536000', #(1 year)
}
Run Code Online (Sandbox Code Playgroud)
更新:当COMPRESS_OFFLINE为True时,这似乎只是一个问题.我将其设置为False,并且在初始请求期间创建的压缩文件正常工作,并且已经超过一个小时.但是,我更喜欢使用管理命令预压缩这些文件.
django ×10
python ×3
amazon-s3 ×2
apache ×1
apache2 ×1
boto ×1
coffeescript ×1
gzip ×1
query-string ×1
virtualenv ×1