Tornado与JavaScript库的困扰
我正在尝试用Tornado网络服务器写一个简单的Python网页应用,但在使用我需要的JavaScript库时遇到了麻烦。我想用Protovis这个JavaScript绘图库,所以我在我的template.html文件里加了以下的“你好,世界”代码片段:
<script type="text/javascript" src="/protovis-d3.2.js"></script>
<script type="text/javascript+protovis">
new pv.Panel()
.width(150)
.height(150)
.anchor("center")
.add(pv.Label)
.text("Hello, world!")
.root.render();
</script>
但是每次我启动网络服务器并尝试访问这个页面时,控制台都会出现以下错误:
WARNING:root:404 GET /protovis-d3.2.js (127.0.0.1) 0.46ms
protovis.js文件和我的server.py文件在同一个文件夹里,而且所有的权限设置也都正确。当我尝试引入其他JavaScript文件时也会出现同样的错误,所以我知道问题不在于protovis.js文件,而是Tornado服务器的路由出了问题。
有没有人知道我该如何正确引入这个JavaScript代码呢,谢谢。
1 个回答
12
你应该看看关于静态文件的文档。
特别是,标准的做法是:
在你的应用程序根目录下创建一个叫做 'static' 的文件夹
在你的应用设置中添加以下内容:
"static_path": os.path.join(os.path.dirname(file), "static")
把protovis-d3.2.js文件放到你的静态文件夹里
在你的HTML中引用这个文件/static/protovis-d2.2.js