2017-04-30 3 views
-1

Ich bin neu in Kolben, HTML, Jinja und ich habe Probleme, die Werte von einer Vorlage zur anderen zu übergeben. Ich habe mir viele andere Seiten über SO angesehen und niemand hatte das gleiche Problem. Ich habe eine Seite mit einem Drop-Down-Auswahlmenü und einem Absenden-Button, der den Benutzer nach seiner Wahl umleitet. Mein Problem ist, dass ich nicht weiß, wie ich diese Wahl an das Formular auf der nächsten Seite weitergeben kann. Im Folgenden ist mein HTML-Formular-Code:Flask Passing Argumente von einer HTML-Seite zu einer anderen

<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> 

Und die meine Suche und Bezahlfunktionen sind wie folgt:

@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") 

Ich will den Freund in der Suchfunktion auf die Zahlungsfunktion gesendet ausgewählt erhalten. Jede Hilfe wäre sehr dankbar, Danke!

Antwort

1

Beginnen mit Ihrem HTML-Formular. Das Attribut action des Formulars weist das Formular an, wohin es bei der Einreichung gehen soll. Dann können Sie einfach einen Absenden-Button für den Benutzer hinzufügen.

<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> 

Dann können Sie es mit etwas wie folgt verarbeiten:

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

    return render_template("payment.html") 

ich die Formularvalidierung aus Gründen der Klarheit in der Frage über Sie fragen entfernt haben.

+0

Vielen Dank, ich werde dies versuchen und Ihnen die beste Antwort geben, wenn es funktioniert – mks

+0

Ich verstehe nicht, wie oder warum die Seite den tatsächlichen Wert erhält, wenn Sie den Tag gegen den Tag verwenden, aber das funktioniert. danke – mks

Verwandte Themen