【问题标题】:How can I return multi-column table row values for a url_for using the Jinja2 iterrows function?如何使用 Jinja2 iterrows 函数返回 url_for 的多列表行值?
【发布时间】:2017-04-07 20:31:11
【问题描述】:

在下面的示例中,我为 Column3 中的每个行项创建 href,并且变量 (var1) 将与它一起发送(工作正常)。我的问题是如何使用 Column1 的变量 (var2) 发送相邻行的值?这需要用jquery或其他方式处理吗?

下面的 var2 是我想要做的,但目前不知道该怎么做。

表:

       Column1    Column2    Column3
Row1   Yes        Foo        Bar 
Row2   No         Foo1       Bar3
Row3   Maybe      Foo2       Bar2

app.py:

@app.route('/mypage/<var1>')
def python_function(var1,var2):
    df = pd.DataFrame(lotsofdata)
    return render_template('index.html',data=df)

index.html:

<table id="data">
<thead>
<tr>
{% for c in data.columns.values %}
    <th>{{ c }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for index, row in data.iterrows() %}
    <tr>
        {% for v in row %}
            <td>
            {% if data.columns[loop.index0] in ['Column3'] %}
                <a href="{{ url_for('python_function',var1=v,var2=???) }}">{{ v }}</a>
            {% else %}
                {{ v }}
            {% endif %}
            </td>
        {% endfor %}
    </tr>
{% endfor %}
</tbody>
</table>

【问题讨论】:

标签: python flask jinja2


【解决方案1】:

要在 jinja 中调用函数,您需要在 __init__.py

中创建一个全局函数
def cool_func(var1, var2):
    return var1 + var2  # or something

app.jinja_env.globals.update(cool_func=cool_func)

那么对于你的例子,你可以替换:

<a href="{{ url_for('python_function',var1=v,var2=???) }}">

与:

<a href={{ cool_func(var1, var2) }}>

【讨论】:

  • 啊……我没想过要这样做。在 python 中识别相邻的单元格,然后从 jinja 调用它......这使得多单元格调用现在变得非常容易。太棒了,谢谢!
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 2021-05-12
  • 2018-01-30
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多