views:

92

answers:

1

Hi, I am trying to get Protovis working in my Django site. Here is my sample code:

<html>
    <head>    
    <script type="text/javascript" src="protovis-r3.2.js"></script>
    </head>
    <body>
    <script type="text/javascript+protovis">
        new pv.Panel().width(150).height(150).anchor("center")
            .add(pv.Label)
            .text("Hello, world!")
        .root.render();
    </script>
    {{ object.name }}
    </body>
</html>

When I open this file directly in firefox, a Protovis 'Hello World' image is displayed toguether with the string "{{ object.name }}".

But when accessing the .html file template from my Django server, I only see the {{ object.name }} (the object's name printed out).

I haven't found similar issues so far, catering to Protovis use in Django. If anyone has gotten it working or know what I am doing wrong, please let me know.

Thanks,

A: 

You've asked for the javascript file using src="protovis-r3.2.js"

When you look at the html file directly, your browser will look in the same directory as the .html file for a file called protovis-r3.2.js.

However, when you ask Django to serve this same page, it doesn't follow the same protocol. See this article for more information.

To get it to work:

  • Move the protovis-r.32.js file to a new directory: /path/to/my/django_site/static (where /path/to/my/django_site is the absolute path to the django app)

  • Configure urls.py with the line:

(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/my/django_site/static'}),

  • Change the src attribute of the script tag in your html code to:

src="/static/protovis-r3.2.js"

Max
thanks Max, I have been stuck in this problem for quite a while. =)
mhz