Django压缩器在GitHub Action中找不到要压缩的块



我有一个Django项目,它使用Django压缩器来缩小和连接CSS文件,使用离线压缩。我还没有把它放在服务器上,但当我在GitHub Action中运行manage.py compress时,在运行测试之前,它找不到{% compress %}块,即使它可以找到包含它们的模板。

我有一个使用CSS文件的模板,templates/myapp/layouts/base.html:

<!DOCTYPE html>
{% load compress static %}
<html lang="en">
<head>
<!-- ... -->
{% compress css file global %}
<link rel="stylesheet" href="{% static 'oohdir/css/global/variables.css' %}">
<link rel="stylesheet" href="{% static 'oohdir/css/global/reset.css' %}">
<link rel="stylesheet" href="{% static 'oohdir/css/global/form.css' %}">
<!-- etc -->
{% endcompress %}

当在本地运行网站时,我可以使用以下Django设置:

DEBUG = False
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True

当我运行manage.py compress时,它会在static_collected/CACHE/CSS/中生成一个预期的CSS文件。当我在浏览器中查看页面时(使用manage.py runserver --insecure(,该文件在HTML中被链接。

但当我运行GitHub Action时,许多测试都失败了,因为缺少一个django压缩器没有生成的文件。

如果我在Action中运行manage.py compress --verbosity 2,我可以看到它在所有其他模板中找到了正确的模板:

Found templates:
...
myapp/inc/form_field.html
myapp/layouts/base.html
admin/tree_list.html
...

但它不认为有什么可以压缩的:

Compressing... done
Compressed 0 block(s) from 9 template(s) for 1 context(s).

应该是1 block(s)。我被难住了。

多亏了Dan的备忘单,我发现了问题:在我的GitHub Action中,我在manage.py collectstatic之前运行manage.py compress,认为collectstatic需要收集生成的压缩CSS文件。

但它需要反过来,以便在compress对所有静态文件进行处理之前,将其收集到位。

所以现在我的测试步骤看起来像这样:

- name: Run Tests
run: |
./manage.py collectstatic --verbosity=0 --noinput
./manage.py compress --verbosity=0
flake8 myproject
black . --check
coverage run ./manage.py test
env:
[all my env vars]

相关内容

最新更新