我已经将一个字符串列表传递给了我的Jinja2模板.我想将Jinja2用于join列表,但我想将每个列表项转换为a href.是否有可能或者我是否需要以某种方式将链接传递给模板?
# I use this to join the list items.
{{ my_list|join(', ') }}
# I use this to make links individually
{% for i in my_list %}
<a href="/edit/{{ i }}">i</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如何在项目加入之前将项目转换为链接?
任何帮助都是极好的.
使用循环的loop特殊变量for:
{% for i in my_list %}
<a href="/edit/{{ i }}">i</a>{% if not loop.last %}, {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
你也可以将它包装在一个宏中:
{% macro listlinks(mylist, urltemplate="/edit/%s", connective=", ") -%}
{% for item in mylist -%}
<a href="{{ urltemplate|format(item)|e }}">{{ item|e }}</a>
{% if not loop.last %}{{ connective|e }}{% endif %}
{%- endfor %}
{%- endmacro %}
{{ listlinks(list_of_ids) }}
Run Code Online (Sandbox Code Playgroud)
但是,我建议你不要在你的模板中建立路径名,正如@Demian在他的回答中所建议的那样.最好通过一些抽象机制在模板之外构建路径名,例如像Pyramid的request.route_url()系统,或者甚至只是控制器中的元组.
| 归档时间: |
|
| 查看次数: |
7015 次 |
| 最近记录: |