【问题标题】:Django template object not showingDjango模板对象未显示
【发布时间】:2019-12-07 08:28:39
【问题描述】:

所以我遇到了这个奇怪的事情。我不能在模板中传递数据,除非它在 ​​forloop 中。

例如.. 我几乎可以在 for 循环内打印一个变量,但 forloop 之外的东西没有显示出来。

{{listings.make}} <<<< This isn't printing


{% for listing in listings %}
   <p>{{listing.make}}</p> <<<< This is printing
{% endfor%}
def search(request):
    queryset_list = Vehicle.objects.all()

    context = {

        'listings': queryset_list
    }

    return render (request, 'mainapp/new_listing.html', context)

class Vehicle(models.Model):
    year = models.CharField(max_length=4, choices=YEAR)
    make = models.CharField(max_length=50, default="")
    model = models.CharField(max_length=50, default="")
    version = models.CharField(max_length=50, default="")
    description = models.TextField(max_length=50, default="")

    def __str__(self):
        return self.make

知道实际发生了什么。如您所见,我正在使用基于函数的视图。

谢谢

【问题讨论】:

  • {{ Listings }},这将打印出来
  • 这是打印的对象很好 exp , ]>
  • 它将打印您的实例列表,如果您想要单独打印,您必须遍历列表。在模板中是查看它的方式,或者您可以在视图中循环浏览
  • 确保你在make中有价值

标签: django django-templates django-views


【解决方案1】:

那是因为listings 是一个查询集列表,而不是一个单个车辆;所以它没有make 字段。

如果你想访问模型的字段,你应该有一个单个对象。正如您所提到的,实现这一目标的一种方法是遍历对象。获取单个对象(仅列表中的第一个)的另一种方法是使用{{ listings.first.make }}

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 2013-04-27
    • 2020-06-04
    • 1970-01-01
    • 2018-09-03
    • 2012-05-24
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多