类似于 Jinja2/Flask 中的 'startswith' 的方法
Method similar to 'startswith' in Jinja2/Flask
我正在寻找类似于 python 的 startswith 的 method/way。
我想做的是 link table 中以 "i-".
开头的一些字段
我的步数:
我创建了过滤器,return True/False:
@app.template_filter('startswith')
def starts_with(field):
if field.startswith("i-"):
return True
return False
然后link将其编辑为模板:
{% for field in row %}
{% if {{ field | startswith }} %}
<td><a href="{{ url_for('munin') }}">{{ field | table_field | safe }}</a></td>
{% else %}
<td>{{ field | table_field | safe}}</td>
{% endif %}
{% endfor %}
不幸的是,它不起作用。
第二步。我在没有过滤器的情况下做到了,但是在模板中
{% for field in row %}
{% if field[:2] == 'i-' %}
<td><a href="{{ url_for('munin') }}">{{ field | table_field | safe }}</a></td>
{% else %}
<td>{{ field | table_field | safe}}</td>
{% endif %}
{% endfor %}
可行,但向该模板发送不同的数据,并且仅适用于这种情况。我在想 [:2] 可能有点问题。
所以我尝试编写过滤器,或者可能有一些我在文档中跳过的方法。
表达式 {% if {{ field | startswith }} %}
将不起作用,因为您不能将块彼此嵌套。您可能可以使用 {% if (field|startswith) %}
,但 custom test 比过滤器更好。
类似
def is_link_field(field):
return field.startswith("i-"):
environment.tests['link_field'] = is_link_field
然后在你的模板中,你可以写{% if field is link_field %}
更好的解决方案....
可以直接在field中使用startswith,因为field是一个python字符串。
{% if field.startswith('i-') %}
更多,您可以使用任何String函数,例如str.endswith()
。
在 Jinja2 中,您可以使用 regex_search() 对您的字符串进行正则表达式测试:
field | regex_search("^i-")
如果您的字符串有“i-”且行首由脱字符“^”表示,return 为真。
我正在寻找类似于 python 的 startswith 的 method/way。 我想做的是 link table 中以 "i-".
开头的一些字段我的步数:
我创建了过滤器,return True/False:
@app.template_filter('startswith') def starts_with(field): if field.startswith("i-"): return True return False
然后link将其编辑为模板:
{% for field in row %}
{% if {{ field | startswith }} %}
<td><a href="{{ url_for('munin') }}">{{ field | table_field | safe }}</a></td>
{% else %}
<td>{{ field | table_field | safe}}</td>
{% endif %}
{% endfor %}
不幸的是,它不起作用。
第二步。我在没有过滤器的情况下做到了,但是在模板中
{% for field in row %}
{% if field[:2] == 'i-' %}
<td><a href="{{ url_for('munin') }}">{{ field | table_field | safe }}</a></td>
{% else %}
<td>{{ field | table_field | safe}}</td>
{% endif %}
{% endfor %}
可行,但向该模板发送不同的数据,并且仅适用于这种情况。我在想 [:2] 可能有点问题。
所以我尝试编写过滤器,或者可能有一些我在文档中跳过的方法。
表达式 {% if {{ field | startswith }} %}
将不起作用,因为您不能将块彼此嵌套。您可能可以使用 {% if (field|startswith) %}
,但 custom test 比过滤器更好。
类似
def is_link_field(field):
return field.startswith("i-"):
environment.tests['link_field'] = is_link_field
然后在你的模板中,你可以写{% if field is link_field %}
更好的解决方案....
可以直接在field中使用startswith,因为field是一个python字符串。
{% if field.startswith('i-') %}
更多,您可以使用任何String函数,例如str.endswith()
。
在 Jinja2 中,您可以使用 regex_search() 对您的字符串进行正则表达式测试:
field | regex_search("^i-")
如果您的字符串有“i-”且行首由脱字符“^”表示,return 为真。