Django:Как я могу вызвать значения полей формы, которые я хочу правильно отобразить, когда я хочу создать распечатку в формате pdf

Привет команда stackoverflow;

Я новичок в django, я надеюсь, что смогу найти решение или кто-то может помочь мне, потому что я действительно застрял на, я потратил целый день на поиски, не достигнув своей цели;

Я хочу создать распечатку после заполнения формы, эта форма содержит поля "longeur", "largeur", "element", пользователь заполняет эту форму, затем он нажимает на кнопку для отображения "момента" и "площади", которые будут рассчитаны автоматически и отображены под формой. но на распечатке я бы пока просто отобразил значения, введенные пользователем в поле "longuer" и "largeur"

Вот история моего кода;

У меня есть класс модели в models.py вида(formulaire):

class Forms(models.Model): 
    element = models.CharField(verbose_name=" Component ", max_length=60, default="e1")
    hauteur = models.FloatField(verbose_name=" Height ")
    longuer = models.FloatField(verbose_name=" Length between posts ")

в views.py: я определил функцию "forms_render_pdf_view" для генерации pdf, где я передал поля формы ("longeur" и "largeur" в словарь "context"), которые я хочу, чтобы их значения отображались на моей pdf-распечатке.

def forms_render_pdf_view(request, *args, **kwargs):
   template_path = 'pages/generate_pdf.html'
   context = {'longuer':request.GET.get('longuer'), 'largeur':request.GET.get('largeur')}
   response = HttpResponse(content_type='application/pdf')
   response['Content-Disposition'] = 'filename="report.pdf"'
   template = get_template(template_path)
   html = template.render(context)
   pisa_status = pisa.CreatePDF(
      html, dest=response)
   if pisa_status.err:
      return HttpResponse('We had some errors <pre>' + html + '</pre>')
   return response

the forms.py:

class FormsCreationForm(forms.ModelForm):
    class Meta:
        model = Forms
        fields = '__all__'
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

и вот html файл для рендеринга в pdf:(generate_pdf.html) где я назвал "hauteur" и "longeur" для отображения их значений в pdf.

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
  </head>
  <body style="font-size: 18px;"">
    <div style="padding: 3rem;" class="container">
        <h1>Hauteur:</h1>
        <p>{{ hauteur }}</p>
        <h1>Longueur:</h1>
        <p>{{ longueur }}</p>  
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>

    -->
  </body>
</html>

Но когда я создаю распечатку, я не нашел их значений (Нет значения "longeur", Нет значения "largeur") и нет ошибки, я не знаю, что я забыл на самом деле!

Вот изображение сгенерированного pdf.

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

Пожалуйста, помогите мне, любая помощь будет оценена по достоинству Как я могу вызвать значения полей, которые я хочу отобразить правильно.!!!? Заранее спасибо.

Попробуйте использовать POST вместо GET

Замените свой код из: context = {'longuer':request.GET.get('longuer'), 'hauteur':request.GET.get('hauteur')}

To:

context = {'longuer':request.POST.get('longuer'), 'hauteur':request.POST.get('hauteur')}

Вставьте код вашего html шаблона для FormsCreationForm, который передает данные в функцию просмотра (forms_render_pdf_view)

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