【问题标题】:Serve different Static files on devel and production in Django在 Django 中为开发和生产提供不同的静态文件
【发布时间】:2015-10-02 05:55:27
【问题描述】:

我有一个生产和本地 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 解析器,它会在每次部署时添加它,但我正在寻找一个简洁且面向 django 的解决方案。

【问题讨论】:

  • 这可以通过模板标签输出整个href来轻松管理,模板标签会根据设置的值执行不同的操作。

标签: django django-staticfiles django-deployment django-static django-dev-server


【解决方案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 %}

【讨论】:

    【解决方案2】:

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

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

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

    Django - How to make a variable available to all templates?

    【讨论】:

      【解决方案3】:

      像往常一样,这里有一个 Django 包!我用了两个:

      django 压缩器:http://django-compressor.readthedocs.org/en/latest/ django 管道:https://django-pipeline.readthedocs.org/en/latest/

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

      【讨论】:

      • 我已经在使用 dango 压缩器,但我遇到了这个问题 stackoverflow.com/questions/31389584/… 他们可能是相关的吗?无论如何,我已经检查了文档,但我无法找出解决方案,你能更准确@FlipperPA 吗?
      • 如果有人像我一样需要更多详细信息:压缩器会在生产中自动加载 .gz,因此无需更改名称,只需提供同名的 gzip 压缩文件
      • 抱歉回复的延迟,我这周很忙(实际上是在帮助运行 Django 会议)。是的,您可以让压缩器处理 GZIP,或者在 django-compressor 的生产环境中使用 gulp 压缩和禁用它。
      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 2019-12-12
      • 2017-12-30
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2012-06-04
      • 2014-01-18
      相关资源
      最近更新 更多