有条件地在Django模板中加载开发或生产静态文件

时间:2012-12-07 19:44:00

标签: django build-automation development-environment

我使用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 %}

使用上下文处理器将开发暴露于模板上下文:

from django.conf import settings # import the settings file

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

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

1 个答案:

答案 0 :(得分:3)

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

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