Docxtpl дублирует данные рендеринга в цикле for

У меня есть API на Django Rest Framework и я столкнулся с проблемой при работе с docxtpl. Я использую шаблон для заполнения одним рендером с глобальным контекстом, конвертирую файл в PDF и отправляю его на фронтенд для загрузки файла. Однако если я пытаюсь использовать эту функцию более одного раза, то в первоначально заполненном файле данные дублируются в цикле for документа шаблона. Другими словами, таблица, заполненная с помощью цикла for в шаблоне, которая изначально имеет одну заполненную строку, в итоге оказывается с двумя дублирующимися строками. Думаю, это как-то связано с функцией рендеринга. В какой-то момент я подумал, что решил эту проблему, установив флаг is_rendered в false перед использованием функции рендеринга. Это сработало, когда я тестировал, но до этого я перепробовал так много вещей, что понятия не имею, что действительно решило проблему. Когда я выключаю сервер Django, все возвращается в норму. Это означает, что заполненный документ работает хорошо, когда я пытаюсь загрузить его в первый раз, но он все еще не работает при второй попытке.

with io.BytesIO() as temp_docx_buffer:
        with open("myapp/doc/Modelo_RADOC.docx", 'rb') as file:
            conteudo_arquivo = file.read()

            with io.BytesIO() as arquivo_em_memoria:
                arquivo_em_memoria.truncate(0)
                arquivo_em_memoria = io.BytesIO(conteudo_arquivo)
                doc = DocxTemplate(arquivo_em_memoria)

        temp_docx_buffer.truncate(0)
        doc.is_rendered = False
        doc.render(global_context)
        doc.save(temp_docx_buffer)
        html_content = docx_to_html(temp_docx_buffer.getvalue())
        pdf_binary = convert_html_to_pdf(html_content)
    lista_atividades_letivas_1.clear()
    return pdf_binary

первая загрузка: введите описание изображения здесь

Вторая загрузка: введите описание изображения здесь

Я внес некоторые изменения в функцию, например, использовал файл полностью в памяти. Я также попытался использовать функции Django never_cache, clearsession и даже попробовал использовать промежуточное ПО для очистки сессии. И наконец, поэкспериментировал с установкой флага is_rendered = False

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