3

我有一个生产和本地 DJANGO 开发环境。为了将东西推送到生产环境,我们有一个部署器,它可以压缩和压缩所有 CSS 和 JS 文件。

为了在生产中为他们服务,我需要像这样称呼他们

  <link rel="stylesheet" href="{{ STATIC_URL }}css/filename.min.css.gz">

但是在开发中,我希望提供普通的 css 文件(这样我每次保存时都不必重新缩小和 gzip):

  <link rel="stylesheet" href="{{ STATIC_URL }}css/filename.css">

有没有办法通过向部署程序添加一些东西来实现和自动化这种行为?是否有其他解决方法(如果可以以干净的方式添加 .gz ,我可以摆脱 .min 扩展名?

我想指出,我知道我可以实现一些 html-parser,它会在每次部署时添加它,但我正在寻找一个整洁且面向 django 的解决方案。

4

3 回答 3

1

像往常一样,有一个 Django 包!我用的有两个:

django-compressor:http : //django-compressor.readthedocs.org/en/latest/ django-pipeline:https ://django-pipeline.readthedocs.org/en/latest/

我从 django-pipeline 开始,但最近开始使用压缩器。请参阅文档,我相信您正在寻找一个。祝你好运!

于 2015-07-13T20:21:16.417 回答
1

我喜欢@Nursultan 的想法。要强制执行此操作,您可以编写如下的上下文处理器:

# On yourapp.context_processor.py
from django.conf import settings

def debug_set(request):
    return {'debug_set': settings.DEBUG}

# On your settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
    .
    .
    .
    'yourapp.context_processors.debug_set',
)

# On your templates
{% if debug_set %}
    <link rel="stylesheet" href="{{ STATIC_URL }}css/filename.css">
{% else %}
    <link rel="stylesheet" href="{{ STATIC_URL }}css/filename.min.css.gz">
{% endif %}
于 2015-07-13T22:13:16.120 回答
0

我从来没有遇到过这个问题,但我想出了这两个解决方案:

  1. 使用不同settings.py的生产和开发。但它需要具有相同的名称*.min.js并更改 minifier 的配置。
  2. 或者使用全局变量,到处写

    {% if development_stage %} <link> {% else %} <link> {% endif %}

Django - 如何使变量可用于所有模板?

于 2015-07-13T20:56:04.957 回答