2015-04-02 60 views
1

我有一种情况,用jinja2变量{{creditNumbers|safe}}替换url字符串"/CreditHistory/10216",会加载JavaScript文件。更具体地说,这是有效的;js脚本不加载在jinja2模板

{% block Scripter %} 

<script type="text/javascript" src="./static/assets/js/crossfilter/crossfilter.js"></script> 
<script type="text/javascript" src="./static/assets/js/d3/d3.js" charset="utf-8"></script> 
<script type="text/javascript" src="./static/assets/js/dc.js/dc.js"></script> 
<script type="text/javascript" src="./static/assets/js/queue/queue.js"></script> 
<script src='./static/assets/js/graphsFordringer.js' type='text/javascript' charset="utf-8"></script> 
<script type="text/javascript"> 

queue().defer(d3.json, "/CreditHistory/10216").await(makeGraphs); 

</script> 

{% endblock %} 

但是,这不;

{% block Scripter %} 

<script type="text/javascript" src="./static/assets/js/crossfilter/crossfilter.js"></script> 
<script type="text/javascript" src="./static/assets/js/d3/d3.js" charset="utf-8"></script> 
<script type="text/javascript" src="./static/assets/js/dc.js/dc.js"></script> 
<script type="text/javascript" src="./static/assets/js/queue/queue.js"></script> 
<script src='./static/assets/js/graphsFordringer.js' type='text/javascript' charset="utf-8"></script> 
<script type="text/javascript"> 

queue().defer(d3.json, "{{creditNumbers|safe}}").await(makeGraphs); 

</script> 

{% endblock %} 

在Web浏览器中引发的错误意味着没有任何JavaScript文件被加载。其中之一就是例如该队列不是定义的功能。 同样显而易见的是,"{{creditNumbers|safe}}"变量确实加载到"/CreditHistory/10216"。所以,简而言之,变量加载似乎会中断JavaScript加载。并不是说我找到了文档中类似问题的参考,所以可能不是发生了什么事情。

编辑:

现在看来,我误解了整个情况。它看起来像是在app.py文件中声明jinja2模板变量的方式,这是根本原因。

@app.route失败的代码是;

@app.route('/KundeFordringer/<int:KundeNr>') 
def fordringer(KundeNr): 

    jsonSti = "/CreditHistory/"+str(KundeNr) 
    return render_template("fordringer.html", creditNumbers=jsonSti) 

但是,如果我将代码更改为以下,它工作正常;

@app.route('/KundeFordringer') 
def fordringer(): 

    return render_template("fordringer.html", creditNumbers="/CreditHistory/10216") 

如前所述,观看从web浏览器的源代码,都可以看到使用第一@app.route声明时,该"/CreditHistory/10216"加载。但显然有些事情,从来没有这样做过,就这样做。

任何帮助将不胜感激

+0

尝试删除'|安全' – doru 2015-04-02 12:44:14

+0

@doru,感谢您的建议,但现在看来我误解了这个问题,并且问题来自'app.py'声明,请参阅EDIT。 – Rookie 2015-04-02 14:37:45

+0

从chrome开发工具中检查您的'