不,你没有误解 django-pipeline。您将能够访问主干代码中的 javascript 模板。在我给你答案之前,让我们先看看 django-pipeline 文档是怎么说的。
Pipeline 允许您将 javascript 模板与您的 javascript 视图一起使用。要使用您的 javascript 模板,只需将它们添加到您的 PIPELINE_JS 组
因此,您可以将模板添加到设置文件中的管道中,例如:
PIPELINE_JS = {
'templates': {
'source_filenames': (
'js/templates/**/*.jst',
),
'output_filename': 'js/templates.js'
}
}
现在您必须在浏览器中加载这些 javascript 模板。
请注意:您必须确保在加载任何使用模板的 javascript 代码之前加载模板。否则你会得到一个未定义的错误。
{% load compressed %}
{% compressed_js 'templates' %}
{% compressed_js 'other_backbone_files' %}
现在文档说:
它将通过 window.JST 从您的 javascript 代码中获得
因此,您将拥有一个名为“window”的全局对象,并且您将能够使用其“JST”属性访问模板。JST 属性的值是另一个 javascript 对象。该对象的属性是模板的名称,其值是模板。模板的名称取决于您在设置文件中包含模板的方式。
例如,如果在您的设置文件中,您将模板包含为:
'source_filenames': (
'js/templates/**/*.jst',
)
并且您在“js/templates/app/footer.jst”中有一个模板,您可以通过以下方式在您的 javascript 代码中访问该模板:
template: window.JST['app_footer']
或者如果你做了类似的事情:
'source_filenames': (
'js/templates/app/*.jst',
)
OR
'source_filenames': (
'js/templates/app/footer.jst',
)
并且您在“js/templates/app/footer.jst”中有一个模板,您可以通过以下方式在您的 javascript 代码中访问该模板:
template: window.JST['footer']
请注意,您需要从第一个“*”中包含模板的名称
如果您仍然不确定,那么您可以在您的 javascript 控制台中检查 window.JST 对象以检查其属性。
如果您想使用“JST”以外的其他属性名称,则可以使用 settings.py 中的以下设置来更改它
PIPELINE_TEMPLATE_NAMESPACE = 'window.Templates'
现在您可以访问您的模板将在 window.Templates 对象中,而不是在 window.JST