【问题标题】:Extracting values from a dict - flask and jinja从字典中提取值 - 烧瓶和神社
【发布时间】:2017-02-27 11:41:32
【问题描述】:

在我的模板中

<p>{% for dict_item in MySQL_Dict %}
   {% for key, value in dict_item.items() %}
    {{value}}
   {% endfor %}
{% endfor %}</p>

哪些输出43.8934276 -103.3690243 47.052060 -91.639868 如何将值(即坐标)保持在一起并用逗号分隔?这可能吗?

【问题讨论】:

  • 你能提供一个dict_item的样本吗?它看起来像另一个字典中的值。
  • 我没有在任何地方定义 dict_item,它只在那里使用。
  • dict_item 只是MySQL_Dict 的一项。为您提供正确答案以及改进此问题所需的方法是添加此MySQL_Dict 的示例。

标签: python flask jinja2


【解决方案1】:

最简单的方法是在后端对其进行格式化并以您想要的方式将其传递给 jinja。事实上,最好将复杂的逻辑放在后端而不是前端 性能更好,在 jinja 的情况下,你不必传入 python 方法,所以它更干净......其他模板框架,如龙卷风包括所有python 的基本函数,所以你不必像下面的例子那样传递它们。另一种方法是将str.joinlenrange 方法传递给jinja e.x join=str.join, len=len, range=range 然后... 我猜MySQL_Dict 是一个二维数组,因此对于循环

<p>
  {% for dict_item in MySQL_Dict %} // dict_item == [{}, {}, ...]
    {% for i in range(len(dict_item)) %} // dict_item[i] == {some object}
      {{",".join(dict_item[i]["latitude"], dict_item[i]["longitude"])}}
     {% endfor %}
  {% endfor %}
</p>

【讨论】:

  • 好的,好点。我会在后端试试。无论如何,这就是它最终会结束的地方。你写的代码最终给了我一个 500 错误,顺便说一句,仅供参考,不要粗鲁:)
  • 在没有所有信息的情况下测试代码不是问题,因为我自己无法运行它,但基本逻辑仍然正确。如果您发现上面代码的问题并进行编辑,我很乐意进行更改
  • 谢谢!我使用了您的逻辑和建议,并将所有计算移至后端,然后将值传递给模板。使用 Jinja 模板更容易,更不容易混淆。谢谢!
  • 没问题 :-) 乐于助人
【解决方案2】:

使用列表推导:

[[value for key, value in dict_item.items()] for dict_item in MySQL_Dict]

将返回每个字典中所有值的列表。

【讨论】:

  • 我认为 Jinja 中不允许使用列表推导式。
猜你喜欢
  • 2021-12-08
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2016-04-20
  • 2021-06-20
相关资源
最近更新 更多