Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Django中为不同的模板加载、最小化和组合不同的javascript文件?_Javascript_Django_Django Templates_Django Pipeline - Fatal编程技术网

有没有办法在Django中为不同的模板加载、最小化和组合不同的javascript文件?

有没有办法在Django中为不同的模板加载、最小化和组合不同的javascript文件?,javascript,django,django-templates,django-pipeline,Javascript,Django,Django Templates,Django Pipeline,现在,我在PIPELINE_JS设置中放置了一些常见的javascript文件。但我还想根据每个模板加载更具体的js文件。我知道我可以简单地添加一个script标记,在每个模板中包含相应的js文件,但这会向服务器添加额外的请求,我认为这不是一个好主意。我想要做的理想方法是使用管道加载、最小化和组合基于不同模板的不同js文件。有什么方法可以做到这一点吗?是的,非常简单: PIPELINE_JS = { 'stats': { 'source_filenames': (

现在,我在
PIPELINE_JS
设置中放置了一些常见的javascript文件。但我还想根据每个模板加载更具体的js文件。我知道我可以简单地添加一个
script
标记,在每个模板中包含相应的js文件,但这会向服务器添加额外的请求,我认为这不是一个好主意。我想要做的理想方法是使用
管道
加载、最小化和组合基于不同模板的不同js文件。有什么方法可以做到这一点吗?

是的,非常简单:

PIPELINE_JS = {
    'stats': {
        'source_filenames': (
          'js/jquery.js',
          'js/application.js',
        ),
        'output_filename': 'js/stats.js',
    },
    'logged_in': {
        'source_filenames': (
          'js/jquery.js',
          'js/collections/*.js',
          'js/application.js',
        ),
        'output_filename': 'js/logged_in.js',
    },
    #and so on..
}
在模板中包含时

{% load compressed %}
{% compressed_js 'stats' %}
在要导入其他目标的另一个模板中

{% load compressed %}
{% compressed_js 'logged_in' %} {# or whichever you wish to import #}

为了更好地理解。

您可以在模板中使用一个“js”块,并在每个从“基础”继承的页面上向其添加脚本,js文件会以任何方式被缓存,您可以使用commpress命令:)@lalo pipeline也会对其进行压缩。pipeline是否提供继承结构?我的意思是,正如在您的示例中一样,js/jquery.js应该包含在每个模板中,手动将其包含在每个目标中有点繁琐。在base.html中,有一个名为
pipeline
的块部分,然后在需要特定目标的位置,覆盖那些特定模板中的块。我要做的不是覆盖整个块。我只想在原始模板或基本模板中向目标添加一些新的js文件,并使其成为管道中的一个新的压缩文件。它们在派生html文件中的块的开头使用
{{block.super}