Получение кнопки для выполнения функции в django
Мне нужна веб-страница, на которой пользователь нажимает кнопку для создания документа word.
В настоящее время, однако, когда пользователь нажимает на кнопку, страница просто перезагружается и добавляет '?get_doc=get_doc#' к url.
Вместо этого я бы хотел, чтобы пользователю предлагалось скачать созданный документ
urls.py
app_name = "patient"
urlpatterns = [
    path('add/', views.PatientAddView.as_view(), name="patient_add"),
    path(
        route='<patient_id>/',
        view=views.TreatmentTemplateView.as_view(),
        name='treatment_detail'),
]
views.py
class TreatmentTemplateView(TemplateView):
    template_name = "../templates/patient/treatment_detail.html"
    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context["patient_id"] = self.kwargs["patient_id"]
        result = find_treatment(context["patient_id"])
        context = result[0]
        context["patient"] = result[1]
        return context
    
    def get_doc(request):
        print('running9')
        # if(request.GET.get('get_doc')):
        if 'get_doc' in request.GET:
            print('running')
            document = Document()
            docx_title="TEST_DOCUMENT.docx"
            # ---- Cover Letter ----
            document.add_paragraph()
            document.add_paragraph("%s" % date.today().strftime('%B %d, %Y'))
            document.add_paragraph('Dear Sir or Madam:')
            document.add_paragraph('We are pleased to help you with your widgets.')
            document.add_paragraph('Please feel free to contact me')
            document.add_paragraph('I look forward to assisting you in this project.')
            document.add_paragraph('Best regards,')
            document.add_paragraph('Acme Specialist 1]')
            document.add_page_break()
            # Prepare document for download        
            # -----------------------------
            f = BytesIO()
            document.save(f)
            length = f.tell()
            f.seek(0)
            response = HttpResponse(
                f.getvalue(),
                content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
            )
            response['Content-Disposition'] = 'attachment; filename=' + docx_title
            response['Content-Length'] = length
            return response
html
{% extends "base.html" %}
<!-- {% block title %}Patient: {{ patient.name }}{% endblock %} -->
{% block content %}
<h3>Patient Summary</h3>
<p>
    {{pt_letter|linebreaks}}
</p>
<form action="#" method="get">
<input type="submit" class="btn btn-primary" value="get_doc" name="get_doc">
</form>
{% endblock content %}
Вам нужно указать маршрут для отправки get запроса. Простое описание ниже должно сработать
<form action="{% url 'patient_add' %}" method="get">
<input type="submit" class="btn btn-primary" value="get_doc" name="get_doc">
</form>