Как получить все переменные, определенные в шаблоне Django?
Я новичок в Django, и мне интересно, есть ли способ сбросить все переменные, доступные шаблону для целей отладки. В Python я могу использовать что-то вроде locals()
, есть ли что-то эквивалентное для механизма шаблонов по умолчанию?
Примечание. Предположим, у меня нет доступа к просмотру для целей этого вопроса.
Ответы
Ответ 1
Оба ответа Ned и blaine хороши, но если вы действительно хотите добиться именно того, о чем вы просите, для него есть тег шаблона:
{% debug %}
Встроенные функции: отладка
Дополнительная информация в context_processor.debug, включая:
Если этот процессор включен, каждый RequestContext будет содержать debugи sql_queries, но только если ваша настройка DEBUG установлено значение Истина и IP-адрес запросов (request.META['REMOTE_ADDR']
) находится в настройке INTERNAL_IPS
Как и предложение Peter G, я часто использую блок <div id="django-debug"><pre>{% debug|escape %}</pre></div>
в конце страницы с display:none
, но я могу проверить его на отладку.
Ответ 2
Установите панель инструментов Django Debug. Это дает вам все это и многое другое.
Ответ 3
Вы также можете быть заинтересованы в django-template-repl, оболочке readline для языка шаблона Django. Вы можете удалить {% load repl %}{% pdb %}
в свой шаблон и получить интерактивный отладчик.
Ответ 4
Хотя два решения, предоставленные другими членами, могут получить доступ ко всем переменным в шаблоне, я думал, что должен быть более простой способ (спасибо за ваши ответы, BTW).
Вот простой способ найти все переменные, переданные в шаблон.
- Представьте ошибку в шаблоне, который вы хотите изучить. Добавление несуществующего тега работает.
- Убедитесь, что отладка включена.
- Перейдите на страницу, загружающую шаблон. (ваш сайт должен работать через серверы или другие средства).
Отладочный вывод для шаблона содержит раздел "TraceBack". Найдите трассировку для своего вида (вторая запись сверху в моем случае) и нажмите "Локальные вары". И все это там.