【问题标题】:Display results from two lists in one list with one loop (Flask - Python)用一个循环在一个列表中显示两个列表的结果(Flask - Python)
【发布时间】:2021-12-28 20:45:00
【问题描述】:

我正在尝试在链接列表中的 HTML 页面 (index.html) 上显示我的结果。我有两个列表,第一个包含所有网站名称,第二个包含它们的链接。我想将名称显示为可点击的项目。

我的清单:

name_list = ['Name1','Name2','Name3']
link_list = ['Link1','Link2','Link3']

我的 Python 代码返回的内容:

return render_template('index.html' , name_list =name_list , link_list =link_list , len1 = len(name_list ))

HTML 代码:

{% for i in range(0, len1) %}
      <li><a href={{link_list[i]}} >{{ name_list[i] }}</a></li> 
{% endfor %}

但我有两个错误:

首先使用 len1 ,因为当我将代码更改为 range(0, 5) (或任何 int)时,此行有效。

TypeError: 'Undefined' object cannot be interpreted as an integer

第二个发生在我添加我想要的元素的位置name_list[i]

jinja2.exceptions.UndefinedError: 'name_list' is undefined

【问题讨论】:

  • 您的代码对我有用。这可能是您的变量范围的问题。您确定可以在您的函数中看到 name_list 吗?
  • 你说得对,我在函数中遇到了缩进问题。它解决了一个问题。

标签: python html flask


【解决方案1】:

这是解决问题的简单方法:

你将这两个列表与python的内置函数zip()结合起来:

name_list = ['Name1','Name2','Name3']
link_list = ['Link1','Link2','Link3']
name_link_list = zip(name_list, link_list)

你只需返回这个:

return render_template('index.html' , name_link_list=name_link_list)

这将返回[('Name1', 'Link1'), ('Name2', 'Link2'), ...] 形式的元组列表,您可以使用每个元素的索引在 HTML 代码中获得该列表。 名称为 0,链接为 1。

最后是你的 HTML 代码:

<ul>
    {% for i in name_link_list %}
        <li><a href={{i[1]}} >{{ i[0] }}</a></li> 
    {% endfor %}
</ul>

【讨论】:

  • 绝对是一种更有效的方法
  • 它解决了我的问题,谢谢!此外,由于您的解释,我发现了一个新功能;)
猜你喜欢
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 2022-09-28
  • 2016-04-07
相关资源
最近更新 更多