在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