类似于jja2/flask中的'以'开头的方法 [英] Method similar to 'startswith' in Jinja2/Flask

查看:17
本文介绍了类似于jja2/flask中的'以'开头的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找类似于Python的开头的方法/方式。 我想做的是链接表中以"i-"开头的一些字段。

我的步骤:

  1. 我创建了过滤,返回TRUE/FALSE:

    @app.template_filter('startswith')
    def starts_with(field):
        if field.startswith("i-"):
                return True
        return False
    

然后将其链接到模板:

{% 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 %}

这篇关于类似于jja2/flask中的&#39;以&#39;开头的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆