标记Django模板中的标记

2024-10-01 19:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,让我展示一下views.py文件

context = {
        'id' : id,
        'durum' : durum,
        'range': range(len(id)),
}

我在模板中有这样的数据

context.id = [12, 10, 10] 
context.durum = ['UPL','PPL','FIUPL']

我想像这样匹配这些数据

12 UPL
10 PPL
10 FIUPL

我为此创建了一个for循环,但需要编辑

{% for i in context.range %}
    {{ context.id }}
    {{ context.durum }}
{% endfor %}

像这样,

{% for i in context.range %}
    {{ context.id.i }}
    {{ context.durum.i }}
{% endfor %}

但是我不能在循环中使用变量I


Tags: 文件数据inpyidforlencontext
3条回答

在视图中使用zip

Ex:

context = {
        'data' : zip(id, durum)
}

然后在模板中

使用:

{% for id, durum in data %}
    {{ id }}
    {{ durum }}
{% endfor %}

看起来你是从其他语言转到python的。在python中,循环通常不使用索引(它们更简单、更直观),这就是为什么很难“配对”这些值的原因。如果您仍然可以重构代码,那么使用dict代替使用匹配索引上的属性进行列表。第一,它可以让你在django模板中轻松解包

{% for id, durum in my_dict %}
{{ id }} {{ durum }}
{% endfor %}

第二,它将防止任何与错误索引相关的错误,因为您只需调用id,它将得到正确的durum。第三,更新此类数据集将非常容易

my_dict.update({new_id: new_durum})
请考虑花一些时间学习新的东西,因为它会让你的Python体验更愉快。哦,顺便说一句-大多数时候你不必指定{{ context.something }}调用-调用{{ something }}就足够了

您可以使用列表理解

例如:

my_list = list(zip(context['id'], context['durum'], context['range']))

然后在模板中,您可以使用:

{% for item in my_list %}
    {{ item.0 }}   { item.1 }}
{% endfor %}

相关问题 更多 >

    热门问题