Trouble with Tornado and JavaScript Libraries

5.3k views Asked by At

I'm trying to write a simple python web application using the Tornado web server and am having trouble using the JavaScript libraries I need. I wanted to use the Protovis JavaScript plotting library, so I added the following 'Hello World' code snippet to my 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>

Whenever I run the webserver, however, and try accessing the page, I get the following error at the console:

WARNING:root:404 GET /protovis-d3.2.js (127.0.0.1) 0.46ms

The protovis.js file is in the same directory as my server.py file, and all its permissions are set correctly. I get the same error when trying to src and JavaScript file so I know there isn't a problem with the protovis.js file, but something with the Tornado server's routing.

Does anyone know how I can properly src this JavaScript code, thanks.

1

There are 1 answers

0
DisplacedAussie On BEST ANSWER

You should read the documentation about static files.

In particular, the standard way is to:

  • Create a 'static' directory in the root of your application

  • Add the following to your application settings:

    "static_path": os.path.join(os.path.dirname(file), "static")

  • Put the protovis-d3.2.js in your static directory

  • Refer to the file /static/protovis-d2.2.js in your HTML