【问题标题】:Django: Model query extract not looping in templateDjango:模型查询提取不在模板中循环
【发布时间】:2017-05-05 00:16:40
【问题描述】:

所以,我正在 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 和名称。

【问题讨论】:

  • 有没有可能你所有的 video_path 值都是空白的?我会试试 {{contentt.id}} 看看你有什么收获

标签: django django-template-filters


【解决方案1】:

你实际上必须调用模板标签并将它分配给一个变量才能使用它,你不能只是引用它,就好像它本身就是一个变量。

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

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 2014-03-09
    • 2023-04-09
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多