Генерация pdf не работает в одной функции

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

views.py

def render_to_pdf(request, template_name, context_dict={}, filename="document"):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename="'+filename+'".pdf"'
    template = get_template(template_name)
    html = template.render(context_dict)
    pisa_status = pisa.CreatePDF(
        html, dest=response, link_callback=context_dict)
    if pisa_status.err:
        return HttpResponse('We had some errors <pre>' + html + '</pre>')
    return response
    

def training_completed_attendance(request):
    xyz=trainingMaster.objects.filter(status='Active').order_by('code')
       
    context={
        'xyz':xyz,
    }
    if request.POST.get('pdf_download'):
        pdf= utils.render_to_pdf(request, 'dashboard/generate_pdf.html', context,  filename='training conpleted')
        return HttpResponse(pdf, content_type='application/pdf')
    return render(request,'dashboard/training_completed_report.html',context)

html

<table class="table table-bordered text-center" border="1" id="table1">
    <form method='post'>
        {% csrf_token %}
        <button type="submit" name='pdf_download'>Download</button>
    </form>
<tr>
    <th>Male</th>
    <th>Female</th>
    <th>Total</th>
</tr>
    </tr>

        {% for x in xyz %}
        
                <td style="width: 13%; text-align: center; " class="table-cell-label">{{x.male}}</td>
                <td style="width: 13%; text-align: center; " class="table-cell-label">{{x.female}}</td>
                <td style="width: 13%; text-align: center; " class="table-cell-label">{{x.total}}</td>
        
          
        {% endfor %}  
Вернуться на верх