Tornado与JavaScript库的困扰

5 投票
1 回答
5330 浏览
提问于 2025-04-16 12:49

我正在尝试用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

撰写回答