【问题标题】:How to render queryset in django template如何在 django 模板中呈现查询集
【发布时间】:2015-06-07 15:25:15
【问题描述】:

您好,我正在使用此代码进行渲染

def ShowContent(dic, htmlpage):
    plantilla = get_template(htmlpage)
    c = Context(dic)
    renderizado = plantilla.render(c)
    return HttpResponse(renderizado)

我想代表这个查询,所以我使用 'AllQuery' dict 来表示 'todas.html'。

def ShowAll(request):
    AllQuery = Actividad.objects.all().order_by('fecha')
    print AllQuery
    return ShowContent(AllQuery, 'todas.html')

我不知道如何在我的模板中表示它

                    <tr>
                        <td></td>
                        <td> </td>
                        <td> </td>
                        <td> </td>
                        <td> </td>
                    </tr>

来自models.py的Actividad

 class Actividad(models.Model):
    id_evento = models.IntegerField(primary_key=True)
    titulo = models.CharField(max_length=100)
    tipo_evento = models.CharField(max_length=50)
    gratis = models.BooleanField(default=False)
    fecha = models.DateField()
    hora = models.TimeField()
    largo = models.BooleanField(default=False)
    url = models.URLField(max_length=128)

有什么想法吗?我认为这很容易,但我不明白。我正在尝试这个:

                            {% for i in AllQuery %}
                                { AllQuery.i.titulo }
                            {% endfor %}

从视图中,我可以访问做

def ShowAll(request):
    AllQuery = Actividad.objects.all().order_by('fecha')
    print AllQuery[0].titulo

【问题讨论】:

  • 这应该有效,{% for i in AllQuery %} {{ i.titulo }} {% endfor %}
  • 不行,我试过了 :'( help?
  • 我认为查询集返回给我一个列表,而不是一个字典。我的意思是,“Actividad”对象的列表,Actividad 是一个字典
  • 你为什么坚持使用这个毫无意义的 ShowContent 功能?整个事情可以通过调用django.shortcuts.render来代替。

标签: django templates for-loop django-queryset


【解决方案1】:

只需使用通用列表视图,这将使您的生活更轻松并节省一些时间。

class ListView(generic.ListView)
    model=Actividad
    template_name='todas.html'

然后在您的模板中,您可以像这样显示列表

{% for i in object_list %}
    {{ i.titulo }}
{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 2021-04-21
    • 1970-01-01
    • 2020-10-14
    • 2017-11-08
    • 2019-07-24
    • 2020-05-24
    • 1970-01-01
    相关资源
    最近更新 更多