Как получить все переменные, определенные в шаблоне Django? - PullRequest
40 голосов
/ 14 января 2010

Я новичок в Django, и мне интересно, есть ли способ вывести все переменные, доступные для шаблона, для целей отладки. В Python я мог бы использовать что-то вроде locals(), есть ли что-то эквивалентное для стандартного движка шаблонов?

Примечание: предположим, у меня нет доступа к представлению для целей этого вопроса.

Ответы [ 4 ]

59 голосов
/ 29 октября 2010

Ответы Неда и Блейна хороши, но если вы действительно хотите добиться именно того, о чем просите, есть шаблонный тег:

{% debug %}

Встроенные команды: отлаживать

Дополнительная информация в context_processor.debug , включая:

Если этот процессор включен, каждый RequestContext будет содержать debug и и sql_queries переменные - но только если ваш параметр DEBUG имеет значение True и IP-адрес запроса (request.META['REMOTE_ADDR']) находится в INTERNAL_IPS настройке

Как и в случае с предложением Питера Г., я часто использую <div id="django-debug"><pre>{% debug|escape %}</pre></div> блок в конце страницы с display:none, но который я могу проверить для отладки.

16 голосов
/ 14 января 2010

Установите Django Debug Toolbar . Это дает вам все это и даже больше.

9 голосов
/ 15 января 2010

Вас также может заинтересовать django-template-repl , оболочка readline для языка шаблонов Django. Вы можете добавить {% load repl %}{% pdb %} в свой шаблон и получить интерактивный отладчик.

5 голосов
/ 20 января 2010

Хотя два решения, предоставленные другими участниками, могут дать вам доступ ко всем переменным в шаблоне, я подумал, что должен быть более простой способ (спасибо за ваши ответы, кстати).

Вот простой способ найти все переменные, переданные в шаблон.

  1. Введите ошибку в шаблон, который вы хотите проверить. Добавление несуществующего тега работает.
  2. Убедитесь, что отладка включена.
  3. Перейдите на страницу, которая загружает шаблон. (ваш сайт должен быть запущен через runserver или каким-либо другим способом).

Вывод отладочной информации для шаблона содержит раздел под названием «TraceBack». Найдите трассировку для вашего представления (вторая запись сверху в моем случае) и нажмите «Local vars». И это все там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...