С помощью представления переменных в шаблонах Джанго

это довольно простой вопрос (я новичок в Django), но у меня возникли проблемы с использованием набора переменных в моем представлении внутри моего шаблона. Если я инициализирую строку или список внутри моего представления (т. е. h = "hello"), а затем попытаюсь вызвать его внутри шаблона:
{{ h }}
нет ни выходных данных, ни ошибок. Аналогично, если я попытаюсь использовать переменную внутри моего шаблона, которая не существует:

{{ asdfdsadf }}

нет снова ошибка. Это нормально? И как я могу использовать мои переменные в моих шаблонах. Спасибо!

3 ответов


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

http://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render-to-response

" словарь", на который ссылаются, есть словарь, который содержит все переменные, которые вы хотите иметь доступными в контексте. Для пример:

return render_to_response('your_template.html', {'h': h})

что касается ошибки "нет ошибки"... Это значение по умолчанию для недопустимой переменной шаблона. Вы можете изменить это в настройках проекта, если хотите.

http://docs.djangoproject.com/en/dev/ref/settings/#template-string-if-invalid


да! Это нормально. Такие ошибки в шаблонах терпят неудачу молча, и это ожидается в Django.

для правильного отображения шаблона использовать render_to_response('your_template.html', {'h':h}) (есть также неприятный ярлык render_to_response('your_template.html', locals()) если ваш контекстный словарь очень большой)

вот некоторые объяснения с примерами:http://www.djangobook.com/en/beta/chapter04/ (раздел "как обрабатываются недопустимые переменные")


вы также можете использовать

return render(request, 'your_template.html', {'h':h, 'var1':var1})

обратитесь к последней версии руководства на https://docs.djangoproject.com/es/1.9/topics/http/shortcuts/