How do I get all the variables defined in a Django template?
DjangoDjango TemplatesDjango Problem Overview
I'm new to Django and I wonder if there is a way to dump all the variables available to a template for debugging purposes. In Python I might use something like locals()
, is there something equivalent for the default template engine?
Note: suppose I don't have access to the view for the purposes of this question.
Django Solutions
Solution 1 - Django
Both Ned's and blaine's answers are good, but if you really want to achieve exactly what you ask for there's a template tag for it:
{% debug %}
More information in the context_processor.debug including:
> If this processor is enabled, every RequestContext will contain debug
> and and sql_queries variables – but only if your DEBUG setting
> is set to True and the request’s IP address (request.META['REMOTE_ADDR']
)
> is in the INTERNAL_IPS setting
Similar to Peter G suggestion, I often use a <div id="django-debug"><pre>{% debug|escape %}</pre></div>
block at the end of the page that has display:none
but that I can inspect to debug.
Solution 2 - Django
Install the Django Debug Toolbar. It gives you all that and more.
Solution 3 - Django
You might also be interested in django-template-repl, a readline shell for the Django template language. You can drop a {% load repl %}{% pdb %}
into your template and get an interactive debugger.
Solution 4 - Django
While the two solutions provided by the other members may get you access to all the variables in a template I thought there had to be an easier way (thanks for your responses, BTW).
Here is a simple way to find all the variables passed to the template.
- Introduce an error into the template you want to examine. Adding a non-existent tag works.
- Ensure that debugging is ON.
- Browse to the page that loads the template. (your site must be running via runserver or some other means).
The debugging output for the template contains a section called "TraceBack". Find the traceback for your view (second entry from the top in my case) and click on "Local vars". And it's all there.