在Python模板中显示带有超链接的列表
我有一个用户列表。我想在模板中显示它:在Python模板中显示带有超链接的列表,python,markup,jinja2,Python,Markup,Jinja2,我有一个用户列表。我想在模板中显示它: {%- for user in listed_of_users -%} <P>{{ user.name }}</P> {%- endfor -%} 它将返回如下列表: User1# User2# User3# User4#... 每个用户名下都有超链接 我使用以下语法在模板中将其显示为字符串: {{ users_list(listed_of_users)}} 但是,我想像上面的格式一样显
{%- for user in listed_of_users -%}
<P>{{ user.name }}</P>
{%- endfor -%}
它将返回如下列表:
User1# User2# User3# User4#...
每个用户名下都有超链接
我使用以下语法在模板中将其显示为字符串:
{{ users_list(listed_of_users)}}
但是,我想像上面的格式一样显示每个用户。我试过:
{%- for user in users_list(listed_of_users) -%}
<P>{{ user }}</P>
{%- endfor -%}
{%-对于用户列表中的用户(列出的用户)-%}
{{user}}
{%-endfor-%}
但是,它不起作用。有人能帮我纠正一下吗?
非常感谢 首先,在您的示例中,
“#”。join(map(create_link,users))
创建了一个长字符串,因此您不能以尝试的方式对其进行迭代。您可以编写lambda表达式并执行双重映射或其他操作,但为什么不省去麻烦,在模板中使用create\u-link
函数,这样如果create\u-link
为超链接返回有效的HTML,您就可以缩短所编写的内容:
{%- for user in listed_of_users -%}
<p> {{ user | create_link | safe }} </p>
{%- endfor -%}
(其中,
environment
是用于呈现模板的jinja2
环境)。作为奖励,这意味着您还可以在任何地方使用过滤器。您可以通过{{user}在上找到更多信息。它返回一个HTML文本字符串。对于{user.name}
,它不返回任何内容。这意味着用户列表功能已经改变了原来的列表,对吗?非常感谢jeff。我最终使用另一个内置函数实现了它,我当时还没有发现。但这种过滤方式确实很有前途。我会了解更多的。{%- for user in listed_of_users -%}
<p> {{ user | create_link | safe }} </p>
{%- endfor -%}
environment.filters["create_link"] = create_link