标记内标记 Django 模板

Posted

技术标签:

【中文标题】标记内标记 Django 模板【英文标题】:Tag inside tag Django template 【发布时间】:2020-10-29 18:48:10 【问题描述】:

首先,让我展示一下我们的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。

【问题讨论】:

【参考方案1】:

在视图中使用zip

例如:

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

然后在模板中

用途:

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

【讨论】:

【参考方案2】:

您可以使用列表推导。

所以,例如:

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

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

% for item in my_list %
     item.0  --  item.1 
% endfor %

【讨论】:

【参考方案3】:

嗯,你好像是从其他语言迁移到 python 的。您通常不会在 python for 循环中使用索引(它们更容易和更直观),这就是为什么您很难“配对”这些值。如果您仍然可以重构代码,而不是使用匹配索引上的属性列出列表,请使用dict。一 - 它会让你在 django 模板中轻松解压

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

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

my_dict.update(new_id: new_durum)

请考虑花一点时间学习新东西,因为这会让您的 Python 体验更加愉快。哦,顺便说一句 - 大多数时候你不必指定 context.something 调用 - 它足以调用 something

【讨论】:

以上是关于标记内标记 Django 模板的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 1.8 中覆盖现有的模板标记方法

django模板中的锚标记不起作用

django 模板 第 10 行的未封闭标记:'if'。寻找以下之一:endif

在 Javascript 中使用 DJango 模板标签添加 Google 地图标记

如何将 Django 的标记模板标签与 Google App Engine WebApp 框架一起使用

使用标记将 python 字符串插入 Django 模板上下文