我正在使用django-compressor来压缩我网站的静态CSS和Javascript文件.由于我通过Amazon S3提供我网站的静态资产,我还使用django-storage将我的文件上传到S3.
这是我的问题:我正在尝试创建一个干净的base.html模板,我的网站的所有其他模板都可以继承和扩展.这是目前的样子:
{% load compress %}
<html>
<head>
<!-- test -->
{% compress css %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ STATIC_URL }}css/styles.css" />
{% endcompress %}
{% compress css %}
{% block css %}{% endblock %}
{% endcompress %}
{% compress js %}
{% block js %}{% endblock %}
{% endcompress %}
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在这里尝试做的是允许继承此模板的模板覆盖css和js块,因此他们可以定义自己的css和javascript进行压缩.不幸的是,这不是发生的事情.
当我运行python manage.py compress …
我想使用Compass简化在我的Django应用程序中编写CSS的任务.但我不知道如何配置它.
我看到django-compressor支持SASS,但是为了使用Compass,我需要将_*.scss文件转储到我的工作区(Django 1.4),因为这是django-compressor运行scss命令时的工作目录.
Eric Meyer的方法听起来很合理(在开发期间编译.scss文件.css并提交到SCM)但是我不能明白如何.scss在Django工作区中使用SASS/Compass工具在多个应用程序(可重用和不可重用)中进行编译.
我为每个应用程序存储静态样式表文件<app>/static/<app>/css/.
我遇到的问题是这样的:
@import 不适用于各种应用_*.scss文件放在工作区中是不可接受的compass watch在工作区中运行失败:
无需编译.如果您正在尝试启动一个新项目,那么您已经离开了目录参数.
使用@include background(...)失败:
语法错误:未定义的操作:" - compass-list-size(compact(#cccccc,false,false,false,false,false,false,false,false,false))gt 1"
我有一个Heroku设置与django压缩器压缩我的CSS和JS文件.我的默认缓存后端是用memcached设置的(在Heroku上实际上是Memcachier).我的静态文件在Amazon S3实例上提供(由django-storages和boto处理).一般来说,我的设置与django-compressor docs中的这个设置一致.
在我的页面中,指向我的压缩文件的链接有一个"过期"查询,该查询似乎是从生成链接起一小时.我不希望所有的CSS或JS请求都没有过期,因为我有一些我不压缩的CSS和JS(当我尝试时它给了我错误......可能是一个不同的问题).
但是,每小时一次链接断开,网站没有更多样式或JS.看起来链接或至少是expires标头正在被缓存而不是重新生成,因此在expires参数传递的时间过后,Amazon不再返回该文件.如果我刷新内存缓存,它会将链接中的expires标头更改为一小时,这会将问题解决一小时,直到它再次过期.
以下是美国东部时间今天,9月18日星期二下午1点39分左右生成的链接示例:https://zen180-static.s3.amazonaws.com/CACHE/css/68d31794a646.css ?Signature=u%2FTxeF7LBBZTDV79YovOjoK2tcw %3D&Expires = 1347993542&AWSAccessKeyId = AKIAIJ7VKLEX7HIMJZCA.首次生成后,页面将继续提供该链接而不进行更改.在美国东部时间2:39左右(即Unix时间1347993542,来自URL中的expires参数),该链接停止工作并发回"过期"XML消息(与现在相同).但是我的页面上仍然存在错误的链接,直到我刷新memcache.
以下是相关设置:
COMPRESS_ENABLED = True
STATICFILES_STORAGE = '[my app's name].storage.CachedS3BotoStorage' (a subclass of S3BotoStorage that is almost identical to the one from django-compressor's docs linked above)
COMPRESS_STORAGE = STATICFILES_STORAGE
COMPRESS_URL = STATIC_URL
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': 'localhost:11211',
'TIMEOUT': 500,
'BINARY': True,
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<RequestId>81A63F24378ECB5E</RequestId>
<Expires>2012-09-18T18:39:02Z</Expires>
<HostId>lIr5l9Fna95DUfk6hUsWqhO5EQNn6Ayu8BatpEavis8YzLvsaJRru4O8P/50pgMy</HostId>
<ServerTime>2012-09-18T18:59:51Z</ServerTime>
</Error>
Run Code Online (Sandbox Code Playgroud) python django amazon-s3 django-staticfiles django-compressor
我希望能够在我的生产站点上调试缩小的压缩javascript代码.我们的网站使用django压缩器来创建缩小和压缩的js文件.我最近读到有关chrome可以使用源映射来帮助调试这样的javascript.但是我不知道如何可能告诉django压缩器在压缩js文件时创建源映射
我正在使用Django-Compressor Filter作为Wagtail的一部分(具有超酷UI的Django变体CMS).环境是Wigtail 0.2 + Python 2.7 + Django 1.6 + Virtualenv + FastCGI + Apache共享主机.
尝试访问CMS的管理员/登录页面时出现问题.Django显示错误渲染模板
Error during template rendering
In template /home/username/env/lib/python2.7/site-packages/wagtail/wagtailadmin/templates/wagtailadmin/skeleton.html, error at line 20
/bin/sh: django_libsass.SassCompiler: command not found
Run Code Online (Sandbox Code Playgroud)
skeleton.html的第20行是:
<!doctype html>
{% load compress %}
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="{{ LANGUAGE_CODE|default:"en-gb" }}"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="{{ LANGUAGE_CODE|default:"en-gb" }}"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="{{ LANGUAGE_CODE|default:"en-gb" }}"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="{{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Windows 10 机器上启动并运行现有的 Django 1.11.7 (Python 3.5) 项目。设置环境后,我现在可以在运行应用程序后看到主页,但我访问的任何内部页面都会收到以下错误:
argument 5: <class 'TypeError'>: expected LP_OVERLAPPED instance instead of pointer to OVERLAPPED
我已经追踪到从 compress.py (Django 压缩器)对一些压缩 CSS 文件的调用,到 django.core 内部的一些 win32 文件锁定代码,特别是这一行: https://github.com/django/django /blob/master/django/core/files/locks.py#L86(在下面的片段中解锁FileEx)。
class OVERLAPPED(Structure):
_anonymous_ = ['_offset_union']
_fields_ = [
('Internal', ULONG_PTR),
('InternalHigh', ULONG_PTR),
('_offset_union', _OFFSET_UNION),
('hEvent', HANDLE)]
LPOVERLAPPED = POINTER(OVERLAPPED)
....
def lock(f, flags):
hfile = msvcrt.get_osfhandle(_fd(f))
overlapped = OVERLAPPED()
ret = LockFileEx(hfile, flags, 0, 0, 0xFFFF0000, byref(overlapped))
return bool(ret)
def unlock(f):
hfile = msvcrt.get_osfhandle(_fd(f))
overlapped = …Run Code Online (Sandbox Code Playgroud) 此问题专门针对使用Django Compressor的生产站点.我想在COMPRESS_OFFLINE = True时使用它,这样我就可以在推送到生产之前预压缩我所有网站的css文件.
我想在base.html中做相同的事情:
{% compress %}
{% block css %}
{% endblock %}
{% endcompress %}
Run Code Online (Sandbox Code Playgroud)
以便扩展base的文件中的所有css块都被压缩.这主要是因为我不必将{%compress%}标签添加到我的所有子模板中.
Stack Overflow上有几个类似的问题,但是在离线压缩时(例如使用Django Compressor的压缩管理命令),我没有找到一个很好的解决方案.当COMPRESS_OFFLINE = False时,周围的压缩标签工作正常.有人找到了让这项工作脱机的方法吗?
我列出了一些似乎与非离线解决方案有关的类似线程.第二个线程中的链接表明在离线使用Django Compressor时存在过去的继承问题,但可能已经解决了:
我django-compressor用来编译和缩小我的静态资产.我有一些来自Angular或其他Django库的模板,这些模板最终会被抛入我staticfiles不希望django_compressor压缩的目录中.事实上,当它当前在它们上面运行时,它会引发很多嘈杂的错误:
Error parsing template /app/.heroku/python/lib/python2.7/site-packages/suit/templates/admin/filer/image/change_form.html: 'filermedia' is not a valid tag library: Template library filermedia not found, tried django.templatetags.filermedia,django.contrib.staticfiles.templatetags.filermedia,django_select2.templatetags.filermedia, <...>
Invalid template /app/staticfiles/profile-page/bower_components/angular-strap/src/datepicker/datepicker.tpl.html: Could not parse the remainder: '$iconLeft' from '$iconLeft'
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉django-compressor忽略某些目录/文件?
我正在尝试将django-compressor和django-storages-redux与django staticfiles和Amazon S3一起使用.这些是我的设置:
STATIC_URL = COMPRESS_URL = 'http://my-bucket.s3-us-west-2.amazonaws.com/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'site-static'),
)
COMPRESS_PRECOMPILERS = (
('text/scss', 'sass --scss --compass {infile} {outfile}'),
)
COMPRESS_CSS_FILTERS = [
'compressor.filters.css_default.CssAbsoluteFilter',
'compressor.filters.cssmin.CSSMinFilter',
]
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE = 'myapp.apps.mymodel.storage.CachedS3BotoStorage'
COMPRESS_OUTPUT_DIR = 'cache'
COMPRESS_ENABLED = False
AWS_S3_HOST = "s3-us-west-2.amazonaws.com"
AWS_ACCESS_KEY_ID = '---'
AWS_SECRET_ACCESS_KEY = '---'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
AWS_QUERYSTRING_AUTH = False
AWS_S3_CUSTOM_DOMAIN = 'my-bucket.s3-us-west-2.amazonaws.com'
Run Code Online (Sandbox Code Playgroud)
对于静态文件,我使用自定义存储后端,如此处所建议http://django-compressor.readthedocs.org/en/latest/remote-storages/
from django.core.files.storage import get_storage_class
from …Run Code Online (Sandbox Code Playgroud) django amazon-s3 django-storage django-staticfiles django-compressor
我刚刚将django-compressor安装到我的项目中,并且收到以下错误消息。
呈现时的TemplateSyntaxError /捕获到UncompressableFileError:在COMPRESS_ROOT'/ Users / taelimoh / Dropbox / gluwa-git / static'或静态文件中找不到'js / jquery-1.7.2.min.js'。
当我尝试压缩CSS文件时也会发生这种情况。
当然,文件在那里,当我不尝试使用django-compressor压缩它们时,它可以正常工作。
下面是我的模板
...
{% compress js %}
<!--Javascripts-->
<!--Libraries-->
<script type="text/javascript" src="/static/js/jquery-1.7.2.min.js"></script>
{% endcompress %}
...
Run Code Online (Sandbox Code Playgroud)
这是我的settings.py
COMPRESS_ENABLED = True
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.humanize',
##############################################
'appconf',# required by django-compressor
'versiontools',# required by django-compressor
'compressor',#https://github.com/jezdez/django_compressor
...
)
Run Code Online (Sandbox Code Playgroud)
我正在使用Google App Engine,而我的Django版本是1.3。该问题是在我的开发服务器上产生的。
django ×9
python ×4
amazon-s3 ×2
compass-sass ×1
compression ×1
inheritance ×1
offline ×1
python-2.7 ×1
python-3.x ×1
sass ×1
wagtail ×1