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)