所以我是整个网络和Flask编程的新手。我在网页中显示来自我的数据库的相当好的信息,然后我混合了一些java脚本。但是后来由于我在互联网上阅读的内容,我有了像这样组织我的URL的想法
然而,当我在烧瓶页面时,我的网址越来越深,我最终得到了java脚本错误,因为这些额外的级别已附加到我的脚本标记中的src属性路径。
那么这里发生了什么?我缺少一些基本的网络编程知识吗?我在下面添加了一些代码,显示了我遇到的例子。
以下文件位于以下文件夹配置
project_root
├── app.py
├── static
│ └── js
│ └── clock.js
└── templates
├── clock.html
└── index.html
app.py
import flask
app = flask.Flask(__name__)
@app.route('/clock')
def clock():
return flask.render_template('clock.html')
@app.route('/deep/clock')
def deep_clock():
return flask.render_template('clock.html')
if __name__ == '__main__':
app.run(debug=True)
clock.html
<!DOCTYPE html>
<html>
<head>
<script src="static/js/clock.js"></script>
</head>
<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
clock.js
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt').innerHTML =
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
因此,如果您复制所有内容并运行app.py,那么
和
那么这里发生了什么?我需要做些什么才能使它们在当前配置中工作?
答案 0 :(得分:2)
运行应用程序时,您应该看到日志显示:
127.0.0.1 - - [18/Nov/2015 11:00:40] "GET /clock HTTP/1.1" 200 -
127.0.0.1 - - [18/Nov/2015 11:00:40] "GET /static/js/clock.js HTTP/1.1" 200 -
127.0.0.1 - - [18/Nov/2015 11:00:52] "GET /deep/clock HTTP/1.1" 200 -
127.0.0.1 - - [18/Nov/2015 11:00:52] "GET /deep/static/js/clock.js HTTP/1.1" 404
如您所见,最后日志显示404
(未找到):它无法在clock.js
下找到/deep/static/js/
。这是真的,我们根本没有这个文件夹。
所以,问题是js路径。解决方案是:
从以下位置更改您的js路径:
<script src="static/js/clock.js"></script>
到
<script src={{ url_for('static', filename="js/clock.js") }}></script>
现在,一切都应该是好的:)在这个的帮助下,我们可以成功找到我们的文件。
文档:Static Files