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" в представлении и установка его в переменную.
  • Переключение порядка переменных (на случай, если функция по какой-то причине отобразит только первую контекстную переменную).
  • Все комбинации одинарных и двойных кавычек.

Есть идеи? Мне кажется, что я упускаю что-то глупое и очевидное. Ваше здоровье!

Вернуться на верх