djang中未呈现模板

2024-06-01 09:09:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个invoice Receipt,它从django数据库获取数据,并在模板上呈现这些数据。数据被存储并可以在终端中显示,数据被很好地存储在该模型中。我已经做了好几次了,但我不明白为什么我的模板中没有呈现数据

这是我的模特

class LR(models.Model):
    lr_quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_lr')

    lr_no = models.IntegerField(default=0)
    lr_date = models.DateTimeField(max_length=255, default=now)
    lr_billingparty = models.CharField(max_length=255, default=0)  # supplier company name foreign key

    invoice_no = models.IntegerField(default=0)
    lr_declared = models.IntegerField(default=0)
    ewaybill_no = models.IntegerField(default=0)
    lr_quantity = models.IntegerField(default=0)  # quantity
    lr_weight = models.IntegerField(default=0)  # weight

    lr_invoice_date = models.DateTimeField(max_length=255, default=now)

    lr_item_name = models.CharField(max_length=255, default=0)  # said to contain

    lr_consignor_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_address = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_contact_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignor_contact_phone = models.CharField(max_length=255, default=0)  # shipper company name

    lr_consignee_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_address = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_contact_name = models.CharField(max_length=255, default=0)  # shipper company name
    lr_consignee_contact_phone = models.CharField(max_length=255, default=0)  # shipper company name

    vehicle_no = models.CharField(max_length=255, default=0)
    lr_vehicle_type = models.IntegerField(default=0)
    driver_name = models.CharField(max_length=255, default=0)
    driver_no = models.IntegerField(default=0)

def str (self):
    return self.name

这是my views.py:

def PrintLR (request, pk):
    LR = get_object_or_404(LR, lr_quiz_id=pk)
    context_object_name = 'LR'
    template_name = 'classroom/suppliers/showLR.html'
    return render(request, 'classroom/suppliers/showLR.html', {LR:'LR'})

这是我的HTML模板:

<tr>
    <th>CNOTE NO</th>
    <th>BOOKING DATE</th>
    <th>BILLING PARTY</th>



</tr>
<tr>
    <td>{{ LR.lr_consignor_contact_phone }}</td>
    <td>{{ LR.lr_declared }}</td>
    <td>{{ LR.lr_consignee_name }}</td>
</tr>

在模板中看不到任何数据,而是字段为空


Tags: 数据nonamedefaultmodelslengthcompanymax
2条回答

更改PrintLR方法

def PrintLR (request, pk):
    qwe = get_object_or_404(LR, lr_quiz_id=pk)
    template_name = 'classroom/suppliers/showLR.html'
    return render(request, 'classroom/suppliers/showLR.html', {qwe:'qwe'})

首先,确保它返回一个对象

qwe = get_object_or_404(LR, lr_quiz_id=pk)

然后在模板中

<td>{{ qwe.lr_consignor_contact_phone }}</td>
<td>{{ qwe.lr_declared }}</td>
<td>{{ qwe.lr_consignee_name }}</td>

这:

return render(request, 'classroom/suppliers/showLR.html', {LR:'LR'})

是错误的-您使用模型实例作为键,使用文本字符串'LR'作为值,因此在模板上下文中没有名为“LR”的内容。你想要的是

return render(request, 'classroom/suppliers/showLR.html', {'LR':LR})

请注意,这次我们使用字符串作为键,实例作为值

作为旁注,您不应该将实例命名为与类相同的名称-这充其量是令人困惑的,并且可能导致意外行为,因为它在当前范围的其余部分中隐藏了类。哦,是的,context_object_name = 'LR'部分是完全无用的

相关问题 更多 >