【问题标题】:Conditionally loading development or production static files in Django template在 Django 模板中有条件地加载开发或生产静态文件
【发布时间】:2012-12-07 19:43:59
【问题描述】:

我使用 Yeoman (http://yeoman.io/) 作为前端构建过程,它将 css 和 javascript 合并/缩小。

在开发环境中,我希望加载单独的、未缩小的源代码以便于调试,而无需设置 Chrome 源地图 (http://code.google.com/p/closure-compiler/wiki/SourceMaps)。在生产环境中,为了提高性能,会加载级联、缩小的源代码。

我最初的方法是在我的模板中使用如下条件:

    {% if DEVELOPEMENT %}
        <!-- library -->
        <script src="{{ STATIC_URL }}lib/jquery.js"></script>
        <script src="{{ STATIC_URL }}lib/some_library.js"></script>

        <!-- app -->
        <script src="{{ STATIC_URL }}scripts/main.js"></script>
        <script src="{{ STATIC_URL }}scripts/app_model.js"></script>
        <script src="{{ STATIC_URL }}scripts/app_view.js"></script>

    {% else %}
        <script src="{{ STATIC_URL }}min/lib.min.js"></script>
        <script src="{{ STATIC_URL }}min/app.min.js"></script>
    {% endif %}

DEVELOPMENT 使用上下文处理器向模板上下文公开:

from django.conf import settings # import the settings file

def development(context):
    return {'DEVELOPEMENT': settings.DEVELOPEMENT}

这种方法有什么缺点吗?在 Django 中是否有更简洁的方法来实现这一点?

【问题讨论】:

标签: django build-automation development-environment


【解决方案1】:

我会使用您的DEBUG 设置,该设置已包含在django.core.context_processors.debug 中。

{% if debug %}
    <!-- scripts -->
{% else %}
    <!-- other scripts -->
{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2016-03-02
    • 2020-10-02
    • 2015-08-22
    相关资源
    最近更新 更多