Ich habe ein Problem mit einer while-Schleife: Die Liste, die ich zuvor erstelle und dann innerhalb von while ergänze, kann anschliessend nicht ausserhalb von while verwendet werden. Hier der Code:
Code: Alles auswählen
#! C:\Python\Python39\python.exe -u
from flask import Flask, url_for, request, render_template
app = Flask(__name__)
@app.route("/form_question_add_mc")
def form_question_add_mc():
return render_template('form_question_add_mc.html') # Template einbinden
@app.route("/question_add_mc_save", methods=['POST']) # nur POST erlaubt
def question_add_mc_save():
status = request.form['status']
qtype = request.form['qtype']
complexity = request.form['complexity']
max_score = request.form['max_score']
qtext = request.form['qtext']
answer1 = request.form['answer1']
img1 = request.form['img1']
correct1 = request.form['correct1']
explication1 = request.form['explication1']
# Erste Antwort in zweidimensionales Array (Liste) answers schreiben
answers=[[answer1, img1, correct1, explication1]]
# Auf weitere Antworten prüfen
answer_nr=2
while answer_nr > 0: # Laufe bis zum Abbruch
# zum Überprüfen von POST-Variablen können request.data und request.form verwendet werden
if 'answer'+str(answer_nr) in request.form:
answers += [[request.form['answer'+str(answer_nr)], request.form['img'+str(answer_nr)], request.form['correct'+str(answer_nr)], request.form['explication'+str(answer_nr)]]]
# Das funktioniert:
#return str(answers)
answer_nr=answer_nr+1
else:
break
# ***********************************************************************************************************
# Die Antwort sollte z.B. so aussehen: [['Ja', 'pictures/img1.jpg', '1', 'Ist doch klar'], ['Manchmal', 'pictures/img2.jpg', '0', 'Nur, wenn man es nicht bemerkt'], ['Nein', 'pictures/img3.jpg', '1', 'Ich würde mal googeln...']]
# Das funktioniert nicht
return str(answers)
if __name__ == '__main__':
app.run(port=2000, debug=True, use_debugger=True, use_reloader=False)
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'correct3'
Ich dachte, das Problem könnte mit globalen und lokalen Variablen zusammenhängen, aber da answers vor while definiert wird, sollte die Variable doch global sein, oder nicht? Kann mir jemand einen Tipp geben, was ich an meinem Ansatz ändern muss?
Gruss, inips