我使用烧瓶,想要从表中选择一个用户,然后使用所选用户的ID重定向页面。我的代码如下所示:
HTML:
<form action="" method="POST">
<table>
<tr>
<th>Id</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
{% for user in users %}
<tr type="submit" name="action" value="{{user.user_id}}">
<td>{{user.user_id}}</td>
<td>{{user.first_name}}</td>
<td>{{user.last_name}}</td>
</tr>
{% endfor %}
</table>
</form>
Python:
def userSelect():
if request.method == 'POST':
return redirect(url_for('user', user=request.form['action']))
return render_template('userSelect.html', users=user.query.all())
我也尝试过使用JQuery进行发布,但是我不确定如何在重定向到的页面中使用ID,并且在从JQuery进行发布后无法从flask进行重定向:>
$("table tr").on("click",function()
{
var selected = $("td:first", this).text();
$.post("/user", {user_id: selected}, function(){
window.location.href = "/user";
});
});
编辑:
让我说我想在重定向到的页面上显示该ID(类似这样):
@app.route("/user")
def user(user):
return user
答案 0 :(得分:2)
使用您的Jquery代码,它将为服务器制作一个ajax
$.post("/user", {user_id: selected}, function(){
window.location.href = "/user";
});
因此,如果您修改代码,Flask无法重定向:
$.post("/user", {user_id: selected}, function(data){
console.log(data);
});
您将看到Flask返回了重定向页面的HTML。
最后,我认为这对您有帮助: 烧瓶:
@app.route('/user/<user_id>')
def userHasSelected(user_id):
....
// I don't know why do you need this return redirect
return redirect(url_for('user', user=request.form['action']))
JS:
$("table tr").on("click",function()
{
var selected = $("td:first", this).text();
// {{url_for('user', user_id=selected)}} it will be rending from server
window.location.href = {{url_for('user', user_id=selected)}}
// or
window.location.href = `/user?user_id=${selected}`;
});