将变量函数名称传递给烧瓶中的url_for

时间:2020-05-23 08:02:59

标签: python flask jinja2 url-for

是否有任何方法可以根据表行中的其他参数动态更改 url_for 内部的函数名称。例如,考虑以下内容:

{% for ii in User.Channel %}
      <tr>
        <td><b>{{loop.index0+1}}</b></td>
        <td><b>{{ii}}</b></td>
        <td><a href="{{ url_for('variable function depending on ii') }}"> {{ii}}</a></td>
      </tr>
      {% endfor %}

因此,如果User.Channel(它是类型类)表示频道名称,则如果ii是“ Youtube”,那么我们转到Youtube函数,如果ii是“ Google”,那么我们转到Google函数。 (请记住,ii看起来像一个字符串,但它是类型类。) 一种方法是使用我猜想的if语句,但是这种方法无法扩展,应该说

if (ii == 'Youtube'):
  href="{{url_for("Youtube")}}"

我在想的另一种方法是将实际参数传递给Jinja 2模板,如下所示:

{% for ii in User.Channel %}
      <tr>
        <td><b>{{loop.index0+1}}</b></td>
        <td><b>{{ii}}</b></td>
        <td><a href="{{ url_for('%s'| format(ii)) }}"> {{ii}}</a></td>
      </tr>
      {% endfor %}

然后在view.py中创建与ii名称相对应的路由。但是我还是不知道将ii作为字符串传递,并且使其在循环迭代后发生变化。在上面的名称函数中也添加一个“”(因为ii是类型类,应该转换为字符串)。

如果有人告诉我是否有办法在烧瓶中进行此操作(动态更改函数名称),或者有人建议使用其他方法来实现类似功能的方法,我将不胜感激。

编辑 ii 是类型类变量,应强制转换为字符串。它看起来像字符串。例如ii是“ Youtube”,“ Google”。

0 个答案:

没有答案