global variable from django to javascript


I would like some variables from my to be available in every javascript running across my project.

What is the most elegant way of achieving this?

Right now I can think of two:

  • write a context processor and declare those globals in a base template. All templates must extend the base template.

  • declare those globals in a dynamically generated .js file (by some view) and load this file using <script> tag in a base template. All templates must extend the base template.

Can I do it without a base template?


I have the same problem, and I'm using an ugly solution with a “refactor later” note.
I put a js_top block at the top of my base template, and then any template who needs additional includes or js variables set can use that block.
So I have stuff such as this:

{% block js_top %}
    <script src="/jquery.useless-plugin.js" type="textjavascript"></script>
    <script type="textjavascript">
        var myVar = {{my_variable.propriety}};
{% endblock %}

Of course if you have need of a more robust and less “one-off” system, I'd go with the generated js.

By : Agos

I'm not familiar with django, so this might be completely incorrect.

Can you write out the variables to hidden HTML fields on the page. This will allow you to access them from JavaScript, or utilise them in form posts should you require that.

This video can help you solving your question :)
By: admin