Pawel Furmaniak
Pawel Furmaniak

Reputation: 4816

global variable from django to javascript

I would like some variables from my settings.py 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:

Can I do it without a base template?

Upvotes: 5

Views: 2390

Answers (3)

Agos
Agos

Reputation: 19450

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}};
    </script>
{% endblock %}

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

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 599946

I would use option 1. You should use a base template in any case, and a context processor is probably the best way of getting the variables into it.

Upvotes: 6

Mutation Person
Mutation Person

Reputation: 30520

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.

Upvotes: 1

Related Questions