Python Django:从表单集视图生成pdf文件
我有一个模型表单集,用户在其中输入信息。我试图让用户能够下载一个pdf文件,其中的数据输入正在呈现 以下是我的formset视图的外观:Python Django:从表单集视图生成pdf文件,python,django,Python,Django,我有一个模型表单集,用户在其中输入信息。我试图让用户能够下载一个pdf文件,其中的数据输入正在呈现 以下是我的formset视图的外观: def New_Sales(request): #context = {} form = modelformset_factory(historical_recent_data, fields=('id','Id', 'Date','Quantity', 'NetAmount', 'customer_name'))
def New_Sales(request):
#context = {}
form = modelformset_factory(historical_recent_data, fields=('id','Id', 'Date','Quantity', 'NetAmount', 'customer_name'))
if request.method == 'GET':
formset = form(queryset= historical_recent_data.objects.none())
#blank_form = formset.empty_form
elif request.method == 'POST':
formset = form(request.POST)
#blank_form = formset.empty_form
if formset.is_valid():
request.session['sale'] = request.POST['sale']
for check_form in formset:
check_form.save()
quantity = check_form.cleaned_data.get('Quantity')
id = check_form.cleaned_data.get('Id')
update = replenishment.objects.filter(Id = id).update(StockOnHand = F('StockOnHand') - quantity)
update2 = Item2.objects.filter(reference = id).update(stock_reel = F('stock_reel') - quantity)
return redirect('/dash2.html')
#else:
#form = form(queryset= historical_recent_data.objects.none())
return render(request, 'new_sale.html', {'formset':formset})
下面是我的pdf_生成器视图的外观:
def get_pdf_invoice(request):
pdf = render_to_pdf('pdf/invoice_generator.html', request.session.get('sale'))
if pdf:
response = HttpResponse(pdf, content_type='application/pdf')
filename = "Melt_Invoice_{}.pdf".format(request.session.get('sale').get('customer_name'))
content = "inline; filename={}".format(filename)
content = "attachment; filename={}".format(filename)
response['Content-Disposition'] = content
return response
return HttpResponse("Not found")
以下是我尝试以pdf格式呈现为模板的内容:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<style>
table {
width:100%;
}
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 2px;
text-align: left;
}
table#t01 tr:nth-child(even) {
background-color: #eee;
}
table#t01 tr:nth-child(odd) {
background-color: #fff;
}
/* table#t01 th {
background-color: black;
color: white;
} */
body{
font-size: 12px;
}
h1,h2,h3,h4,h5,h6,p{
padding: 0;
margin: 0;
}
img{
float: left;
}
</style>
</head>
<body>
<table id="t01">
<tr>
<th colspan="5" style="text-align: center;">
<div style="text-align: center">
<h3 style="padding-top: 5px; margin: 0;"> INVOICE NUMBER<span style="white-space: pre;"> </span></h3>
<p style="padding: 0; font-size: 40px; margin: 0;"><img src="{{ logo }}" style="height: 40px; width: 70px; margin-left: 30px;"> {{ name }}</p>
<p style="padding-bottom: 2px; margin: 0; font-size: 15px;"></p>
<h3 style="padding-bottom: 5px; margin: 0;">
{{ address }}
</h3>
<p style="margin: 0; padding: 0;"><b>Email</b>: | <br></p>
</div>
</th>
</tr>
<tr>
<td colspan = "2"><b>To, M/s:</b> <br><b>GSTIN :</b> 27AAACV6873B1ZA</td>
<td colspan = "3"><b>Your registration number : </b><br> <b>Dated: </b></td>
</tr>
<tr>
<td colspan = "2"><b>Invoice No : <span style="font-size: 20px;"></span></b><br><b>Date :</b></td>
</tr>
<tr>
<th style="text-align: center; width: 70%">Particular</th>
<th style="text-align: center; width: 15%">Quantity</th>
<th style="text-align: center; width: 25%">Amount</th>
</tr>
{% for work in works %}
<tr>
<td>{{ Id }}<br><br>
</td>
<td>{{ quantity }}</td>
<td>{{ NetAmount }}</td>
</tr>
{% endfor %}
<!-- {% if works|length == 1 %}
<tr style="border-bottom-style: hidden;">
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
</tr>
<tr style="border-bottom-style: hidden;">
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
</tr>
<tr>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
</tr>
{% endif %}
{% if works|length == 2 %}
<tr style="border-bottom-style: hidden;">
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
</tr>
<tr>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
<td style="padding-top: 100px;"> </td>
</tr>
{% endif %} -->
<tr>
<td colspan="3"><b>Grand Total:</b> </td>
</tr>
<tr>
<td colspan="5">
euros.
</td>
</tr>
<tr>
<td colspan="3">
<div style="text-align: center">
Receives the above mentioned goods in good working condition
</div>
<br>
<div style="width: 100%">
<span class="left" style="white-space: pre;">Send Through Received By</span>
</div>
</td>
<td colspan="2">
<br>
<div style="vertical-align: bottom !important; text-align: center">
A ver despues
</div>
</td>
</tr>
</table>
<br>
</body>
</html>
{%load static%}
桌子{
宽度:100%;
}
表,th,td{
边框:1px纯黑;
边界塌陷:塌陷;
}
th,td{
填充:2px;
文本对齐:左对齐;
}
表#t01 tr:n个子项(偶数){
背景色:#eee;
}
表#t01 tr:n个孩子(奇数){
背景色:#fff;
}
/*表#t01第{
背景色:黑色;
颜色:白色;
} */
身体{
字体大小:12px;
}
h1,h2,h3,h4,h5,h6,p{
填充:0;
保证金:0;
}
img{
浮动:左;
}
发票号码
{{name}
{{地址}
电子邮件:|
收件人,M/s:
GSTIN:27AAACV6873B1ZA
您的注册号:
日期:
发票编号:
日期:
特指的
量
数量
{%为在建工程%}
{{Id}}
{{数量}}
{{NetAmount}}
{%endfor%}
总计:
欧元。
在良好的工作状态下接收上述货物
发送通过接收
绝望的人
在这里我有点不知所措,我的主要问题是如何在pdf生成器模板中引用request.session.get('sale')
,以从pdf上显示的数据中获取数据