使用Flask/Jquery将可点击的表格行中的值传递到Python

问题描述:

所以,我是Python和Flask的新手,并且构建了一个应用程序,该应用程序显示表中的投资组合列表。现在,我使用js/Jquery使这些行可点击。然而,我想实现的是,点击行(portfolio_id)的第二列的值以某种方式返回给Python。这个想法是,从列表中选择一个组合后,会出现一个包含该特定组合的详细信息的新屏幕,因此Python需要知道要加载哪个组合。我确实设法将href /链接包含到click事件中,因此新的屏幕出现了,但是我无法弄清楚如何从我的表中获取值到我的Python代码中....在Flask代码下方:使用Flask/Jquery将可点击的表格行中的值传递到Python

{% block main %} 
 
<h2>Portfolio List</h2> 
 
<ul> 
 
    <table style="width:100%"> 
 
    <tr> 
 
     <th>Relationship Nbr </th> 
 
     <th>Portfolio Nbr </th> 
 
     <th>Strategy </th> 
 
     <th>Portfolios </th> 
 
     <th>Last Rebalancing </th> 
 
    </tr> 
 
    {% for portfolio in portfolios %} 
 
    <tr class='clickable-row' data-href="{{ url_for('portfolio') }}" method = POST> 
 
     <td>{{portfolio.rel_nbr }} </td> 
 
     <td>{{portfolio.portfolio_id}}</td> 
 
     <td>{{portfolio.strategy_name}} </td> 
 
     <td>{{portfolio.security_list}} </td> 
 
     <td>{{portfolio.last_rebalance}} </td> 
 
    </tr> 
 
    {% endfor %} 
 
    </table> 
 
</ul> 
 

 
{% endblock %}

我使用jQuery代码如下:

src="jquery-3.2.1.min-js"> 
 
    
 
    jQuery(document).ready(function($) { 
 
    $(".clickable-row").click(function() { 
 
     window.location = $(this).data("href"); 
 
    }); 
 
});

任何想法如何做到这一点? Txs! Bart

+0

http://api.jquery.com/jQuery.ajax/ – davidism

您的代码对我来说工作正常。我刚换了jQuery脚本的地方。

尝试将您的jquery脚本放在适当的位置。我认为这是你的代码无法正常工作的唯一原因。

jQuery(document).ready(function($) { 
 
    $(".clickable-row").click(function() { 
 
     alert($(this).data("href")); 
 
     window.location = $(this).data("href"); 
 
    }); 
 
});
{% block main %} 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<h2>Portfolio List</h2> 
 
<ul> 
 
    <table style="width:100%"> 
 
    <tr> 
 
     <th>Relationship Nbr </th> 
 
     <th>Portfolio Nbr </th> 
 
     <th>Strategy </th> 
 
     <th>Portfolios </th> 
 
     <th>Last Rebalancing </th> 
 
    </tr> 
 
    {% for portfolio in portfolios %} 
 
    <tr class='clickable-row' data-href="{{ url_for('portfolio') }}" method = POST> 
 
     <td>{{portfolio.rel_nbr }} </td> 
 
     <td>{{portfolio.portfolio_id}}</td> 
 
     <td>{{portfolio.strategy_name}} </td> 
 
     <td>{{portfolio.security_list}} </td> 
 
     <td>{{portfolio.last_rebalance}} </td> 
 
    </tr> 
 
    {% endfor %} 
 
    </table> 
 
</ul> 
 

 
{% endblock %}

+0

好了,代码为我工作为好;只是我不知道如何将“portfolio_id”的值(即单击行中的单元格)传递回我的Python代码..... –

+0

您可以将“portfolio_id”的值传递给另一个属性字段,如数据-trtr-id =“ID”在tr标签和点击你可以从jquery获得并与你的href链接进行连接。 –

+0

对,所以我需要修改我的jquery到这样的东西?点击(function(){window.location = $(this).data(“href”); var portfolio_id()。 = $(this).data(“portfolio-id”); }); }); 将Flask/html转换为:

然后,我如何从jQeary获取值到Python中,以便知道我应该在下一个屏幕中加载哪些投资组合? –