Django:模型查询提取不在模板中循环

时间:2017-05-05 00:16:40

标签: django django-template-filters

所以,我正在django制作这个应用程序并使用以下代码:

我在video_select.py文件中的模板标记:

@register.assignment_tag
def content_list():
    contentlist = vvideo.objects.all()
    return contentlist

我的模板:

{% load video_select %}
<article id="menu" style="height:80%;">
    <h2 class="major">Menu</h2>
    <div>
        {% for contentt in content_list %} {{ contentt.video_path }} {% endfor %}
    </div>
    <h2 class="major">End Menu</h2>
</article>

这没有任何显示。但我不确定为什么。

相反,只需打印{%content_list%}即可打印出此输出:

[<vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>]

很明显模板标签正常工作。我的models.py包含:

class vvideo(models.Model):
    video_path = models.CharField(max_length=200, blank=True, null=True)

所以,显然.video_path参考也是正确的。

你能帮我理解为什么我的列表没有循环播放吗?打印出来?我尝试直接在模板标签中迭代它,它正在工作。但是,我真的希望循环在模板本身中运行,因为我正在尝试为每个视频创建href链接。因此,我需要遍历数据库中的所有视频并提取其名称和URL,创建相应的链接。这是每行输出所需的两个项目:因此,最好将一个对象列表发送到模板,并让它在一个循环中提取URL和视频名称。

1 个答案:

答案 0 :(得分:0)

您实际上必须先调用模板标记并将其分配给变量,然后才能使用它,您不能仅仅将它作为变量引用它。

{% content_list as my_content %}
{% for contentt in my_content %} {{ contentt.video_path }} {% endfor %}