2017-02-23 2 views
0

Ich versuche, die Formulareingabe abrufen und steckte ihn in die Variable (Test), ist es das, was ich versucht:Put Formulareingabe in Variable (Python, Flask)

from flask import Flask, redirect, render_template, request, url_for 
import random 

app = Flask(__name__) 
app.config["DEBUG"] = True 

vraag = "Wat is een barkie?" 
ans = ['€10', '€50', '€100', '€1000'] 

@app.route("/") 
def Q1(): 
    random.shuffle(ans) 
    return render_template('main_page.html', vraag=vraag, ans=ans) 


@app.route("/1", methods=["GET", "POST"]) 
def A1(): 
    test = request.POST 
    return render_template('check.html', test=test) 

main_page.html:

<body> 
<p>{{ vraag }}</p> 
{% for item in ans%} 
<form method="POST" action="{{ url_for('A1') }}"> 
    <input type="submit" name={{ item }} value={{ item }} /> 
</form> 
{% endfor %} 
</body> 

Was mache ich hier falsch? Als Fehlercode gibt es "Unhandled Exception"

+0

Um Daten aus einem Formular abzurufen, mache ich immer _name = request.form.get ('name') oder None_, dann kann ich überprüfen, ob ein Name existiert oder nicht. Ich weiß nicht über Anfrage.POST, die ich nie benutzt habe. Wenn der Fehler jedoch eine 'Unhandled Exception' ist, dann könnte es hilfreich sein, ur Code in try außer in Anweisungen zu verpacken und die Exception auszudrucken. –

Antwort

0

request.POST in A1 ist nicht korrekt. Zusätzlich sollten Sie item in Anführungszeichen setzen.

A1 soll wie folgt aussehen:

@app.route("/1", methods=["GET", "POST"]) 
def A1(): 
    if request.method == 'POST': 
     return render_template('check.html', test=str(request.form)) 
    else: 
     return "This page doesn't accept GET requests." 

request.form ist ein ImmutableMultiDict Objekt, so können Sie genau Argumente aus dem Formular übergeben bekommen. Das obige Beispiel zeigt nur, was an das Formular übergeben wurde.