С помощью представления переменных в шаблонах Джанго
это довольно простой вопрос (я новичок в 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/