【问题标题】:Django printed list displays blank fieldsDjango打印列表显示空白字段
【发布时间】:2018-04-26 14:24:45
【问题描述】:

我正在尝试使用 Django 将数据库中的值列表打印到 html 页面上。

我有一个模型定义为:

class Drink(models.Model):
    drink_name = models.CharField(max_length=100)
    strength = models.IntegerField(default=0)
    def __str__(self):
        return self.drink_name

视图定义为:

from django.shortcuts import render

from .models import Drink

# Create your views here.
def index(request):
    served_drinks = Drink.objects.order_by('strength')
    context = {'served_drinks': served_drinks}
    return render(request, 'tavern/index.html', context)

还有一个模板:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Title</title>
</head>
<body>
Welcome to the tavern.<br><br>
{% if served_drinks %}
    <ul>
    {% for drink in served_drinks %}
        <li>{{ Drink.drink_name }} with a strength of {{ Drink.strength }}</li>
    {% endfor %}
    </ul>
{% else %}
    <p>No drinks are available.</p>
{% endif %}

{{served_drinks}}

</html>

模板运行时生成:

Welcome to the tavern.

with a strength of
with a strength of
with a strength of
with a strength of

<QuerySet [<Drink: Water>, <Drink: Wine>, <Drink: Ale>, <Drink: Black Ale>]>

我得到每件物品的一行,但没有drink_name。当我返回模板标签{{served_drinks}} 时,我可以看到那里的项目,所以我认为我的行有问题: &lt;li&gt;{{ Drink.drink_name }} with a strength of {{ Drink.strength }}&lt;/li&gt;

为什么{{ Drink.drink_name }}在这种情况下不返回饮料的名称?

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    您的变量名有错字。 Drink 应该是 drink。

    {% for drink in served_drinks %}
            <li>{{ Drink.drink_name }} with a strength of {{ Drink.strength}}</li>
    {% endfor %}
    

    更正的代码,

    {% for drink in served_drinks %}
            <li>{{ drink.drink_name }} with a strength of {{ drink.strength}}</li>
    {% endfor %}
    

    【讨论】:

    • 啊哈,太简单了——谢谢你的帮助!我显然试图引用模型字段,而不是循环,哎呀!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多