标签: django-compressor

django-compressor是否可以使用模板继承?

我正在使用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)

正如您所看到的,我在这里尝试做的是允许继承此模板的模板覆盖cssjs块,因此他们可以定义自己的css和javascript进行压缩.不幸的是,这不是发生的事情.

当我运行python manage.py compress …

compression django django-compressor

7
推荐指数
1
解决办法
3160
查看次数

Django和指南针与多个应用程序

我想使用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/.

我遇到的问题是这样的:

  1. @import 不适用于各种应用
  2. _*.scss文件放在工作区中是不可接受的
  3. compass watch在工作区中运行失败:

    无需编译.如果您正在尝试启动一个新项目,那么您已经离开了目录参数.

  4. 使用@include background(...)失败:

    语法错误:未定义的操作:" - compass-list-size(compact(#cccccc,false,false,false,false,false,false,false,false,false))gt 1"

django sass django-compressor compass-sass

7
推荐指数
1
解决办法
964
查看次数

Django-compressor/django-storages链接被错误地缓存; 到期

我有一个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

7
推荐指数
1
解决办法
1077
查看次数

有没有办法让django压缩器创建源映射

我希望能够在我的生产站点上调试缩小的压缩javascript代码.我们的网站使用django压缩器来创建缩小和压缩的js文件.我最近读到有关chrome可以使用源映射来帮助调试这样的javascript.但是我不知道如何可能告诉django压缩器在压缩js文件时创建源映射

django-compressor

7
推荐指数
1
解决办法
1777
查看次数

Django Sass Compressor django_libsass.SassCompiler:找不到命令

我正在使用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)

python django python-2.7 django-compressor wagtail

7
推荐指数
1
解决办法
5682
查看次数

Django 1.11.7 - Django 压缩器 - 参数 5:&lt;class 'TypeError'&gt;:预期 LP_OVERLAPPED 实例而不是指向 OVERLAPPED 的指针

我正在尝试在我的 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 python-3.x django-compressor

7
推荐指数
1
解决办法
697
查看次数

Django Compressor离线继承

此问题专门针对使用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压缩器和模板继承

django-compressor是否可以使用模板继承?

django inheritance offline django-compressor

6
推荐指数
1
解决办法
537
查看次数

告诉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忽略某些目录/文件?

python django django-compressor

6
推荐指数
1
解决办法
417
查看次数

UncompressableFileError:'scripts/app.js'无法通过COMPRESS_URL('http://my-bucket.s3-us-west-2.amazonaws.com/')访问,无法压缩

我正在尝试将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

6
推荐指数
1
解决办法
1778
查看次数

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。该问题是在我的开发服务器上产生的。

python django google-app-engine django-compressor

5
推荐指数
1
解决办法
1801
查看次数