Django render_to_string не включает некоторые контекстные переменные при рендеринге
Я искал здесь и пока не нашел ничего, что могло бы помочь.
При использовании render_to_string и предоставлении контекстных переменных, одна из этих переменных используется шаблоном, как и ожидалось, однако другая переменная полностью игнорируется.
Представление. Создает фрагмент HTML, состоящий из отрисованных шаблонов миниатюр. NB: контекст 'image' работает нормально! Только 'click_action', похоже, игнорируется.
def ajax_build_image_thumbnail(request):
image_ids = request.POST.get('ids', None)
html_string = ''
response = {}
for id in image_ids:
image_instance = UserImage.objects.get(pk=id)
context = {
'click_action': "showEditImageModal",
'image': image_instance,
}
html_string += render_to_string('auctions/includes/imageThumbnail.html', context)
response['html'] = html_string
return JsonResponse(response)
Шаблон imageThumbnail:
<div id="{{ image.id }}">
<a href="#" data-click-action="{{ click_action }}"></a>
</div>
Результат:
<div id="265">
<a href="#" data-click-action=""></a>
</div>
Ожидаемый результат:
<div id="265">
<a href="#" data-click-action="showEditImageModal"></a>
</div>
Итак, как вы можете видеть, атрибут data-click-action на якоре пуст в отрисованном шаблоне, где он должен содержать контекстную переменную "click_action"
То, что я пробовал:
- Использование autoescape
- Обработка якоря в тег {% with %} и установка "click_action" в качестве локальной переменной шаблона.
- Жесткое кодирование "click_action" в представлении и установка его в переменную.
- Переключение порядка переменных (на случай, если функция по какой-то причине отобразит только первую контекстную переменную).
- Все комбинации одинарных и двойных кавычек.
Есть идеи? Мне кажется, что я упускаю что-то глупое и очевидное. Ваше здоровье!