4

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

我在app/static/css/home.less中有我的 less 文件。它在static/CACHE/css/5208013a00a2.css 下输出一个 less 文件

在本地运行时(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',
)

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

4

3 回答 3

0

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

于 2013-06-21T06:26:11.670 回答
0

我相信

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

应该

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

因为没有重定向,lessc 将编译为标准输出。

于 2013-01-07T13:01:15.060 回答
0

我遇到了类似的问题,我的设置与您的几乎相同(使用 apache、debug=False 等),但尚未解决。我发现如果我手动运行压缩(python manage.py compress),它会解决这个问题,但它只会暂时解决它。6-12 小时后问题会再次出现。

我正在压缩的 .css/.js 文件中没有任何动态 - 我使用 django 压缩器作为预编译我的lessc 和咖啡脚本的一种方式。

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

编辑:过去 12 天没有再次出现问题。我仍然有点粗略地指出存在问题并且我不理解解决方案,但现在它正在工作,所以我专注于其他事情。如果您有这种性质的问题,请发表或评论。

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

  1. 验证文件是否在 CACHE 目录中生成
  2. 查看文件的所有权和 CACHE 目录,并在必要时对它们进行 chown
  3. 查看缓存中文件的时间戳,验证它们是否合理
  4. 运行 collectstatic 并手动压缩,然后重新启动服务器(如果您使用的是 python runserver 或 sudo service apache2 restart 或其他等效项,则终止并重新启动)
于 2013-07-18T17:41:58.247 回答