Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:从表单集视图生成pdf文件_Python_Django - Fatal编程技术网

Python Django:从表单集视图生成pdf文件

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'))

我有一个模型表单集,用户在其中输入信息。我试图让用户能够下载一个pdf文件,其中的数据输入正在呈现

以下是我的formset视图的外观:

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上显示的数据中获取数据