如何使用 DJango 在 for 循环中使用变量

Posted

技术标签:

【中文标题】如何使用 DJango 在 for 循环中使用变量【英文标题】:How to use variable in for loop using DJango 【发布时间】:2021-04-22 10:24:02 【问题描述】:

我可以在常规 python 中执行此操作,但在模板中似乎无法执行此操作。

所以这是我的变量:

PropertyID = ['A1','A2','A3']
filePaths = A1:'['file1.jpg','file2.jpg','file3.jpg',]', A2:'['file1.jpg','file2.jpg','file3.jpg']'

我的模板:

% for properties in PropertyID %
  % for filePaths in imageFiles %
    % for singleFiles in filePaths %

       

    % endfor %
  % endfor %
% endfor %

我希望能够动态地遍历文件路径,但是当我尝试时:

% for singleFiles in filePaths.properties %

我收到一个错误:

无法解析剩余部分:来自“filePaths.properties”的“properties”

我已经尝试过 filePaths['properties'] 和 filePaths[properties] 以及几乎所有的组合。我只是想不通为什么这不起作用。

如果我执行 filePaths.A1 它工作正常,但我不能以这种方式遍历其余路径。

任何帮助将不胜感激,可能我错过了一些非常愚蠢的事情。

【问题讨论】:

这能回答你的问题吗? how to iterate through dictionary in a dictionary in django template? 去掉大括号! 我认为您需要的是自定义模板过滤器。 我尝试删除大括号,但“属性”不是 filePaths 的属性,所以不起作用。 【参考方案1】:

您不能像那样访问字典键,而是可以在团队中使用 % if % 逻辑:

% for properties in PropertyID %
  % for filePaths in imageFiles %
    % for propertyKey, singleFiles in filePaths.items %
        % if propertyKey == properties %
           % for singleFile in singleFiles %
             // your code
           % endfor %
       % endif %
    % endfor %
  % endfor %
% endfor %

仅供参考,最好在视图而不是模板中执行这些操作。

【讨论】:

以上是关于如何使用 DJango 在 for 循环中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 2.1 中的模板内的 for 循环内设置变量?

来自 % for % 的 Django 模板变量循环到 Javascript

Django在For循环中的过滤器中使用变量

如何在 Jinja python 的 for 循环中添加变量

如何在Django模板的内部for循环中使用外部for循环值

如何在 Django 模板中使用这个 for 循环? [关闭]