2016-03-08 103 views
0

我正在使用django模板和django压缩器来加载我的JavaScript文件。Django模板似乎没有按正确的顺序加载Backbone.js

base_layout.html:

... 

<!-- common imports for all templates --> 
{% compress js %} 
<script type="text/javascript" src="/static/js/api/jquery-2.2.0.js"></script> 
<script type="text/javascript" src="/static/js/api/materialize.js"></script> 
<script type="text/javascript" src="/static/js/api/easychem.js"></script> 
<script type="text/javascript" src="/static/js/styling/menu_helper.js"></script> 
<script type="text/javascript" src="/static/js/api/underscore.js"></script> 
<script type="text/javascript" src="/static/js/api/backbone.js"></script> 
{% endcompress %} 

<!-- custom js imports that each template decides to load --> 
{% compress js %} 
    {% block custom_js %}{% endblock %} 
{% endcompress %} 

... 

compoundReportCard.html

... 
{% block custom_js %} 
<script type="text/javascript" src="/static/js/styling/scrollspy_helper.js"></script> 
<script type="text/javascript" src="/static/js/styling/buttons_helper.js"></script> 
<script type="text/javascript" src="/static/js/models/Compound.js"></script> 
{% endblock %} 
... 

Compound.js

var Compound; 

Compound = Backbone.Model.extend({}); 

当网页加载完毕后,我得到了以下错误:

Compound.js:4 Uncaught ReferenceError: Backbone is not defined(anonymous function) @ Compound.js:4

我之前得到这个错误时,该文件Compound.js Backbone.js的

但在此之前的负载,如果我做到以下几点:

(请注意,我现在在base_layout.html加载Compound.js文件文件)

base_layout.html

 ... 
     <!-- common imports for all templates --> 
     {% compress js %} 
     <script type="text/javascript" src="/static/js/api/jquery-2.2.0.js"></script> 
     <script type="text/javascript" src="/static/js/api/materialize.js"></script> 
     <script type="text/javascript" src="/static/js/api/easychem.js"></script> 
     <script type="text/javascript" src="/static/js/styling/menu_helper.js"></script> 
     <script type="text/javascript" src="/static/js/api/underscore.js"></script> 
     <script type="text/javascript" src="/static/js/api/backbone.js"></script> 
<!--- note this!!! --> 
    <script type="text/javascript" src="/static/js/models/Compound.js"></script> 
     {% endcompress %} 

     <!-- custom js imports that each template decides to load --> 
     {% compress js %} 
      {% block custom_js %}{% endblock %} 
     {% endcompress %} 
     ... 

我没有得到任何错误。

似乎django模板在第一种情况下以不同顺序加载javascript文件,当我使用“custom_js”块时。我对吗?还是我误解了一些东西?我该如何解决这个问题?我只想为compoundReportCard.html加载Compound.js文件

+0

浏览器实际上加载你的JS文件不是django,Django模板只是创建最终结果html。你的问题在其他地方,查看源将向你显示django将它们放入的顺序,这是你指定的顺序。如果您在标记之前放置此复合脚本,您是否会得到相同的结果? –

+0

谢谢你的评论,的确我的问题在别处。 –

回答

0

我发现错误,我不小心产生了导致此问题的额外“{%endblock%}”。