【问题标题】:How to access the dictionary created in Django views in html如何在 html 中访问在 Django 视图中创建的字典
【发布时间】:2020-05-11 02:14:52
【问题描述】:

我通过从数据库中获取数据在 Django 视图中创建了一个字典。但是,我无法理解如何使用它在 html 中将其打印为表格。以下是相关文件。

Views.py

if 'form1' in request.POST:
            d={}
            vendor_choice = request.POST["inlineDefaultRadiosExample"]
            date_choice = request.POST["inlineDefaultRadiosExample1"]
            x = employee.objects.all()
            count=0
            for i in x:
                if date_choice == 1:
                    d[count]=transaction.objects.filter(vendor_id=vendor_choice, emp_id = i.id, timestamp__gte = datetime.date.today() - datetime.timedelta(days=30))
                    count+=1
                elif date_choice == 2:
                    d[count]=transaction.objects.filter(vendor_id=vendor_choice, emp_id = i.id, timestamp__gte = datetime.date.today() - datetime.timedelta(days=60))
                    count+=1
                else:
                    d[count]=transaction.objects.filter(vendor_id=vendor_choice, emp_id = i.id, timestamp__gte = datetime.date.today() - datetime.timedelta(days=180))
                    count+=1
            return render(request, 'profiles/adminKaLogin.html', {'model':d}) 

models.py

class vendor(models.Model):
    id = models.CharField(max_length=20, primary_key=True)
    name = models.CharField(max_length=30)

class employee(models.Model):
    name = models.OneToOneField(User, on_delete=models.CASCADE)
    id = models.CharField(max_length=20, primary_key=True)
    balance = models.IntegerField(default=0)

class transaction(models.Model):
    vendor_id = models.ForeignKey(vendor, on_delete=models.CASCADE)
    emp_id = models.ForeignKey(employee, on_delete=models.CASCADE)
    debit = models.IntegerField()
    credit = models.IntegerField()
    timestamp = models.DateField(("Date"), default=datetime.date.today)

HTML

{% if model %}
            <table>
                <thead>
                    <tr>
                        <th style = "padding: 20px;">Vendor ID</th>
                        <th style = "padding: 20px;">Employee ID</th>
                        <th style = "padding: 20px;">Debit</th>
                        <th style = "padding: 20px;">Credit</th>
                        <th style = "padding: 20px;">Time of transaction</th>
                    </tr>
                </thead>
                <tbody>
                {% for i in model %}
                    <tr>
                        <td style="text-align: center;">{{ i.vendor_id.id }}</td>
                        <td style="text-align: center;">{{ i.emp_id.id }}</td>
                        <td style="text-align: center;">{{ i.debit }}</td>
                        <td style="text-align: center;">{{ i.credit }}</td>
                        <td style="text-align: center;">{{ i.timestamp }}</td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>

感谢任何帮助。谢谢。

【问题讨论】:

  • 类名应遵循CamelCase 样式。

标签: python html django django-views


【解决方案1】:

您的 i 变量包含查询集,因此您需要再迭代一次以获取实际对象:

{% key, i in data.items %}
  {% for el in i %}
   <tr>
       <td style="text-align: center;">{{ el.vendor_id.id }}</td>
       <td style="text-align: center;">{{ el.emp_id.id }}</td>
       <td style="text-align: center;">{{ el.debit }}</td>
       <td style="text-align: center;">{{ el.credit }}</td>
       <td style="text-align: center;">{{ el.timestamp }}</td>
   </tr>
  {% endfor %}
{% endfor %}

【讨论】:

  • 啊,明白了。非常感谢!
  • @DHRUVKAUSHAL 如果您需要迭代 dict,您可以使用 {% key, i in data.items %} 构造。:)
【解决方案2】:

您似乎正在尝试遍历字典,就好像它可能是您的问题的列表一样。你有d = {},你应该有d = [],那么你的其余代码应该可以工作

【讨论】:

  • 嗨。我将 d 更改为 [],并将 d[count] 更改为 d.append。但我仍然没有在 html 中得到任何输出。
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 2011-12-20
  • 2018-11-03
  • 2011-03-22
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多