template examples bootstrap django django-templates

examples - ¿Cómo obtengo todas las variables definidas en una plantilla de Django?



django templates settings (4)

Soy nuevo en Django y me pregunto si hay una manera de volcar todas las variables disponibles para una plantilla con fines de depuración. En Python podría usar algo como locals() , ¿hay algo equivalente para el motor de plantillas predeterminado?

Nota: supongamos que no tengo acceso a la vista para los fines de esta pregunta.



Las respuestas de Ned y Blaine son buenas, pero si realmente quieres lograr exactamente lo que pides, hay una etiqueta de plantilla para él:

{% debug %}

Builtins:debug

Más información en context_processor.debug incluyendo:

Si este procesador está habilitado, cada RequestContext contendrá las variables debug y sql_queries , pero solo si su configuración DEBUG está configurada en True y la dirección IP de la solicitud ( request.META[''REMOTE_ADDR''] ) está en la configuración INTERNAL_IPS

Similar a la sugerencia de Peter G, a menudo uso un bloque <div id="django-debug"><pre>{% debug|escape %}</pre></div> al final de la página que tiene display:none pero que puedo inspeccionar para depurar.


Si bien las dos soluciones proporcionadas por los otros miembros pueden darle acceso a todas las variables en una plantilla, pensé que tenía que haber una manera más fácil (gracias por sus respuestas, por cierto).

Aquí hay una forma simple de encontrar todas las variables pasadas a la plantilla.

  1. Introduzca un error en la plantilla que desea examinar. Agregar una etiqueta inexistente funciona.
  2. Asegúrese de que la depuración esté activada.
  3. Busque la página que carga la plantilla. (su sitio debe estar ejecutándose a través de runserver u otro medio).

La salida de depuración para la plantilla contiene una sección llamada "TraceBack". Encuentre el rastreo para su vista (segunda entrada desde arriba en mi caso) y haga clic en "Variadores locales". Y todo está allí.


También podría estar interesado en django-template-repl , un shell de lectura para el lenguaje de plantilla de Django. Puede colocar un {% load repl %}{% pdb %} en su plantilla y obtener un depurador interactivo.