django-compressor + less压缩文件但链接到原始文件

时间:2012-11-20 10:38:16

标签: django less django-compressor

我有一个django 1.4.2应用程序,django-compressor 1.2用于压缩较少的文件。

我的文件少了 app / static / css / home.less。 它在 static / CACHE / css / 5208013a00a2.css 下输出较少的文件

在本地运行时(Debug = True,文件由django提供)我得到了正确的响应。我的html(模板)文件中的以下输出:

<link rel="stylesheet" href="/static/CACHE/css/5208013a00a2.css" type="text/css">

在部署中运行时(Apache提供文件)我的回复很差。我的html文件中的以下输出:

<link type="text/less" rel="stylesheet" href="/adduplicator/static/css/home.less" charset="utf-8">

文件是在 static / CACHE / css / 5208013a00a2.css 下的部署中创建的,所以我假设没有权限问题。我在日志中没有错。

来自settings.py的一些设置:

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/less', 'lessc {infile} {outfile}'),
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'compressor.finders.CompressorFinder',
)

部署是通过结构进行的,它在虚拟环境下创建应用程序。

3 个答案:

答案 0 :(得分:0)

我相信

('text/less', 'lessc {infile} {outfile}'),

应该是

('text/less', 'lessc {infile} > {outfile}'),

由于没有重定向,lessc将编译为stdout。

答案 1 :(得分:0)

这可能适用于或不适用于原始海报,但我遇到了完全相同的错误(.less文件被链接而不是被生成的CSS替换)这是因为我最近将Django设置为正常运行用户而不是root,因此没有权限写入以root身份创建的缓存文件夹。 chown -R myuser:mygroup static/cache解决了这个问题。

答案 2 :(得分:0)

我遇到了类似的问题,我的设置几乎与你的相同(使用apache,debug = False等),还没有解决。我发现如果我手动运行compress(python manage.py compress),它将解决问题,但它只会暂时解决它。 6-12小时后,问题将再次发生。

我压缩的.css / .js文件中没有任何动态 - 我正在使用django压缩器作为预编译myc和coffeescript的方法。

我希望您在去年秋天遇到此问题时找到了解决方法 - 对于其他遇到相同问题的人,请尝试手动运行compress。我不知道为什么这会有所帮助,因为文件已经存在于CACHE中,但出于某种原因(暂时)。我解决时会更新。

编辑:问题在过去12天内没有再次出现。我仍然有点勾勒出一个问题,我不明白分辨率,但现在它正在工作,所以我专注于其他的东西。如果您有此类问题,请发布或评论。

如果您遇到此问题,建议采取的步骤:

  1. 验证文件是否在CACHE目录中生成
  2. 查看文件的所有权和CACHE目录,并在必要时将其命名
  3. 查看CACHE中文件的时间戳,验证它们是否合理
  4. 手动运行collectstatic并压缩,然后重新启动服务器(如果您使用的是python runserver,则执行kill&amp; restart,或者sudo服务 apache2 restart,或其他等效的)