Flask从一个Html页面传递参数到另一个

时间:2017-04-30 22:23:28

标签: python html flask parameter-passing

我是新手,HTML,Jinja,我无法将值从一个模板传递到另一个模板。我看过很多其他的SO页面,没有人有同样的问题。我有一个带有下拉选择菜单的页面和一个提交按钮,一旦用户做出选择就会重定向。我的问题是我不知道如何将该选择传递到下一页的表单。以下是我的HTML表单代码:

 <form method="POST" action="search">
            <div class="form-group" align="center">
                 <select class="vertical-menu">
                    {% for friend in strFriendList %}
                        <option name="friendToPay" value="{{ friend }}">{{ friend }}</option>
                    {% endfor %}
                </select>

                <a href="{{ url_for('payment') }}"  class="btn-primary"> Submit</a>
            </div>
 </form>

以下是我的搜索和付款功能:

    @app.route("/search")
def search():
  if "email" not in session:
    return redirect(url_for("login"))
  else:
    friendslist1 = Friendship.query.filter_by(username=session["username"]).all()
    friendslist2 = Friendship.query.filter_by(friendUserName=session["username"])
    strFriendList = [""]
    for friend in friendslist1:
      strFriendList.append(friend.friendUserName)
    for friend in friendslist2:
      strFriendList.append(str(friend.username))
    form = SelectFriendForm()
    return render_template("search.html",strFriendList=strFriendList,form=form)

@app.route("/payment",methods=['GET', 'POST'])
def payment(personToPay):
    form = PaymentForm()
    if request.method == "POST":
        if form.validate() == False:
            return render_template("payment.html", form=form)
        else:
            return render_template("search.html")
        # else:
        #     # Query the database and deposit the amount and subtract from giver

    return render_template("payment.html")

我想让在搜索功能中选择的朋友发送到付款功能。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

从HTML表单开始。表单的action属性指示表单在何处继续提交。然后,您可以为用户添加一个提交按钮。

<form method="POST" action="payment">
    <div class="form-group" align="center">
        <select name="friendToPay" class="vertical-menu">
            {% for friend in strFriendList %}
                <option value="{{ friend }}">{{ friend }}</option>
            {% endfor %}
        </select>

        <input type="submit" value="Submit" class="btn-primary" />
    </div>
</form>

然后你可以用这样的东西来处理它:

@app.route("/payment", methods=['POST'])
def payment():
    if request.form.get('friendToPay'):
        # Run your logic here

    return render_template("payment.html")

我已经删除了表单验证,以便明确您所询问的问题。