无法在Django模板标签中使用Python字典

时间:2019-12-11 20:29:54

标签: python django

我检查了多个帖子和解决方案,但无法实现。

我在视图内返回了一个Python对象。我现在想使用该字典中的数据来使用Django模板标签进行渲染。

尽管如此,什么也没出现……

查看:

def render_Terminal(request, template="Terminal.html"):
    account_information = AccountInformation.objects.all()
    account_information_dict = {
        'account_information': account_information
    }
    return render(request, template, (account_information_dict))

HTML

     <div id="oneTwo" class="columnsOne">
       {{ account_information.pk }}
     </div>

仅在标记内使用account_information,我得到:

<QuerySet [<AccountInformation: AccountInformation object (30e61aec-0f6e-4fa0-8c1b-eb07f9347c1f)>]>

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

AccountInformation.objects.all()是带有QuerySet过滤器的all()。 QuerySet是可迭代的,并且在您第一次对其进行迭代时会执行其数据库查询。您可以使用以下方法显示列表中所有项目的ID:

{% for item in account_information %}
  <div id="some-id-{{ forloop.counter }}" class="some-class">
     {{ item.pk }}
  </div>
{% endfor %}

答案 1 :(得分:-1)

这样做

def render_Terminal(request, template="Terminal.html"):
    account_information = AccountInformation.objects.all()
    account_information_dict = {
        'account_information': [a for a in account_information]
    }
    return render(request, template, (account_information_dict))

<div id="oneTwo" class="columnsOne">
   {{ account_information.0.pk }}
</div>

但是您只能恢复第一件物品


一个更好的解决方案可能是

account_information = AccountInformation.objects.get(pk=`you id`)
return render(request, template, (account_information_dict))

然后

<div id="oneTwo" class="columnsOne">
   {{ account_information.pk }}
</div>

Using just account_information within the tag, I get:

如果您使用整数值,则必须在html代码内将项目置于“ for”中

 {% for a in account_information %}
      <div>
            {{ a.pk }}
      </div>
 {% endfor %}