问题标签 [django-compressor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Attribute Error when running collectstatic for Django app
I'm receiving the following error when I run collectstatic:
Everything works fine until I try and gzip my files using storages "AWS_IS_GZIPPED" setting (see my settings.py below).
I am using django-storages which utilizes boto to send my static files up to S3 and django-compressor to compress them.
Here is a full traceback of my error:
Here is my storage.py
which comes straight from the django-compressor docs.
I also have the following in my settings.py
Any help would be much appreciated. A bit lost in the woods.
css - 如何对压缩的 css 文件使用 import 语句
我正在使用 django compress 来压缩我的 css 文件。这些是我给''style'的设置:{
现在如何使用@import
语句包含它,因为它是在我编辑 css 时随机生成的。
django - 我的 LESS @import 路径应该是什么?
这是场景:
我正在运行 Django 1.3.1,使用静态文件和 django-compressor(最新稳定版)来编译 LESS 文件等。
我有一个与静态文件挂钩的“资产”目录STATICFILES_DIRS
(用于项目范围的静态资源)。在那个目录中,我有一个“css”目录和一个包含 LESS 变量和 mixins 的“lib.less”文件。
所以物理路径是<project_root>/assets/css/lib.less
并且它在/static/css/lib.less
.
在我的一个应用程序的静态目录中,我有另一个需要导入上述文件的 LESS 文件。物理路径是<project_root>/myapp/static/myapp/css/file.less
,它将在/static/myapp/css/file.less
.
我的第一个想法是:
(即基于 URL,从 到 上/static/myapp/css
到/static/
,然后向下遍历到/static/css/lib.less
)。
但是,这不起作用,我已经尝试了几乎所有我能想到的 URL 和物理路径的组合,并且它们都FilterError
在模板中给了我 s,因为无法找到要导入的文件。
任何人都知道实际的导入路径应该是什么?
django - 多服务器部署上的 Django Compressor
我很幸运地发现了django_compressor并在我们的堆栈中实现了它,该堆栈部署到许多服务器(目前有 6 个,但随着我们部署更小的虚拟机而增长。)
现在,如果您使用最好的 django_compressor,这一切都很好。压缩原始 CSS/JS 代码
但是,现在说我想介绍某种类型的预编译器。假设这个例子是 LESS (css)。对此的思考过程相当简单:
将 node、npm 和 less 包安装到服务器上。
向您的预编译器添加更少的内容!
COMPRESS_PRECOMPILERS = ( ('text/less', 'lessc {infile} {outfile}'), )
现在您进行部署,并且您的服务器会编译 less 文件。一切都太棒了!
现在让我们再添加 8 台服务器,您必须在每台服务器上安装 node、npm 和更少?
这就是看起来不对劲的地方,我觉得我错过了一些东西。我相信 Django 社区之前也遇到过这个问题。
到目前为止,我的想法是:
使用提交后挂钩在开发人员机器上编译 CSS。这意味着通过 django_compressor,我们链接到 HTML 中已编译的静态文件,并且我们的存储库包含已编译和未编译的版本。我唯一的缺点是它最终没有使用 django_compressor 的一半好处,并且对开发人员来说可能很乏味?
吸收它并使节点、npm 和更少的服务器堆栈的一部分。
更新
我做了一些额外的环顾四周,似乎将COMPRESS_OFFLINE
标志(或只是--force)与管理命令一起使用将产生一个离线清单文件,它可以满足我的需要(仅在本地测试)。因此,使用预部署挂钩进行设置很可能是答案。
当然,仍然对其他想法持开放态度:-)
django - 在 Django 中通过 django-compressor 使用模板变量
问题是{{ STATIC_URL }}
在 django-compressor 编译为 .js 文件的咖啡脚本文件中引用它时没有正确加载。
在我的 django 模板中,我有
在stuff.coffee
我有
那么浏览器中渲染出来的HTML就是
因此我的问题是,如何让 Django 识别{{ STATIC_URL }}
咖啡脚本文件中的 ?非常感谢您的帮助!
django - Django 和 CoffeeScript 到 Heroku 的奇怪部署问题
这是一个复杂的问题,所以需要一点解释。我不是在寻找直接的答案,所以任何建议都会很好。我有一个使用大量 CoffeeScript 的 Django 应用程序。要在我使用的项目中编译 CoffeeScript 应用程序django-compressor
。要使用django-compressor
我需要安装nmp
(节点包管理器)。不幸的是,我无法npm
在 Heroku 上安装。因此,我需要在 CoffeeScript 到达 Heroku 服务器之前对其进行编译。所以我通过设置Fabric
似乎运作良好来做到这一点。
我遇到了一个问题,因为我可以将编译后的 CoffeeScript 作为静态文件获取,但模板中仍然有{% compress js %} *** {% endcompress %}
标签,因为django-compressor
直到运行时才会重新生成新模板。
因此,我正在寻找有关如何部署应用程序以获取模板标签的建议,以便可以将应用程序部署在 Heroku 上。我知道这是一个涉及很多部分的问题,所以任何建议都会非常有帮助!
django - django-compressor 是否适用于模板继承?
我正在使用django-compressor来压缩我网站的静态 CSS 和 Javascript 文件。由于我通过 Amazon S3 提供网站的静态资产,因此我还使用django-storages将我的文件上传到 S3。
这是我的问题:我正在尝试制作一个干净的base.html
模板,我的网站的所有其他模板都可以继承和扩展。这是它目前的样子:
如您所见,我在这里尝试做的是允许继承此模板的模板覆盖css
andjs
块,以便他们可以定义自己的 css 和要压缩的 javascript。不幸的是,事实并非如此。
当我运行python manage.py compress
(让 django-compressor 分析我的模板并生成压缩的 javascript 和 css 代码)时,它实际上并没有找到我包含的 css 和 javascript 文件。
例如,这是我网站的index.html
模板:
当我尝试访问我网站上的该页面时,我收到一条错误消息,指出压缩文件不存在。
我相信正在发生的事情是该python manage.py compress
命令没有检查我继承自base.html
. 而且由于它没有分析它们,因此它没有生成任何压缩代码。
我真的很想让这个工作,因为到目前为止我发现的唯一解决方法是{% compress %}...{% endcompress %}
在我明确拥有的每个模板文件中手动添加标签。我只是讨厌这样做,因为它到处重复这么多代码:(
任何建议将不胜感激。
django - 为什么我在 S3 上的压缩文件返回 403 Forbidden 错误?
我正在使用 django-compressor 和 django-storages 在 S3 上提供我的压缩文件(使用这些说明:http ://django_compressor.readthedocs.org/en/latest/remote-storages/#using-staticfiles )。运行“压缩”管理命令后,它最初运行良好,但大约一小时后,压缩的 css 和 js 文件返回 403 Forbidden 错误,即使我没有对文件进行任何更改。我似乎无法隔离问题,所以任何帮助将不胜感激。
以下是我正在使用的设置:
更新:这似乎只在 COMPRESS_OFFLINE 为 True 时出现问题。我将其设置为 False 并且在初始请求期间创建的压缩文件工作正常并且已经超过一个小时。但是,我更喜欢使用管理命令预压缩这些文件。
django - 使用 django_compressor 将文件压缩为 gzip
我使用django_compressor来压缩我的 js 和 css 文件。它成功创建组合文件。但这个应用程序也允许压缩文件。为此,我创建了
在我的 settings.py 中。在压缩器工作目录中,现在有用于 css 和 js 的 gzip 文件。但是在使用 firebug 检查 html 之后,看起来 gzip 文件不在渲染过程中。我怎样才能改变它?
django - 如何在 apache 中使用 django-compressor?
我一直在使用 Django Compressor 来管理我的 coffee/less 文件,它非常适合开发,但是我遇到了一些问题来使它适用于我的生产部署。
我的想法是让 apache 托管静态文件,可能在另一台服务器上。我正在设置COMPRESS_OFFLINE = True
文件settings.py
。
然后我执行以下操作
python manage.py compress
- 这会填充CACHE
我的目录中的static
目录,其中将收集所有静态文件。python manage.py collectstatic
- 这会将我项目中所有应用程序(其中一些不使用压缩器)的静态文件收集到我的static
目录中。- 将
static
目录复制到某个地方以使用 apache 托管。并设置 apache 来提供文件。 - 修改文件中的
static_url
变量settings.py
指向静态服务器。
如果我打开任何页面,我的服务器上会出现以下错误,这似乎只在我有文件时DEBUG = False
才会COMPRESS_OFFLINE = True
发生settings.py
:
TemplateSyntaxError:渲染时捕获 OfflineGenerationError:您启用了离线压缩,但离线清单中缺少密钥“777ba26736d046ab043dc151e7e9a060”。您可能需要运行“python manage.py compress”。
当我检查static/CACHE
目录时,我确认错误内容,这是我的manifest.json
文件:
如果我删除 CACHE 目录并重新运行python manage.py compress
,我会在错误消息和清单文件中获得一组新的 ID,但清单上仍然缺少错误上的 ID。
所以,我想这里有两个问题。为什么它不起作用?实现这一目标的正确方法是什么?
谢谢。