gpt4 book ai didi

javascript - js 脚本未加载到 jinja2 模板中

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:30 24 4
gpt4 key购买 nike

我遇到的情况是,用 jinja2 变量 {{creditNumbers|safe}} 替换 url 字符串 "/CreditHistory/10216" 会导致加载困惑JavaScript 文件。更具体地说,这是可行的;

{% 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 %}

网络浏览器中抛出的错误意味着没有加载任何 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")

如前所述,从网络浏览器查看源代码,可以看到在使用第一个 @app.route 时加载了 "/CreditHistory/10216" > 声明。但显然,这种做法显然有些不对劲。

任何帮助将不胜感激

最佳答案

JavaScript 文件的加载是相对于当前 url 的。基本上,如果您正在浏览

http://mywebsite.com/KundeFordringer/456

然后浏览器将尝试加载这些文件:

http://mywebsite.com/KundeFordringer/456/static/assets/js/crossfilter/crossfilter.js
http://mywebsite.com/KundeFordringer/456/static/assets/js/d3/d3.js
http://mywebsite.com/KundeFordringer/456/static/assets/js/dc.js/dc.js
http://mywebsite.com/KundeFordringer/456/static/assets/js/queue/queue.js

你想要的可能是

http://mywebsite.com/static/assets/js/crossfilter/crossfilter.js
http://mywebsite.com/static/assets/js/d3/d3.js
http://mywebsite.com/static/assets/js/dc.js/dc.js
http://mywebsite.com/static/assets/js/queue/queue.js

它们可能是您的脚本标签的问题:

<script type="text/javascript" src="./static/assets/js/dc.js/dc.js"></script>

需要重命名

<script type="text/javascript" src="/static/assets/js/dc.js/dc.js"></script>

或者您的static_url_path有问题。

关于javascript - js 脚本未加载到 jinja2 模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com