问题
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.
回答1:
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 %}
Builtins: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.
回答2:
Install the Django Debug Toolbar. It gives you all that and more.
回答3:
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.
回答4:
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.
来源:https://stackoverflow.com/questions/2066905/how-do-i-get-all-the-variables-defined-in-a-django-template