2016-04-14 9 views
0

Ich bin ein Newbee lernen Flask und versuche herauszufinden, wie Daten in meiner kleinen App hin und her übergeben. Der folgende Code gibt den Fehler "Fehlercode: Unhandled Exception" zurück, wenn ein gültiger Zug gespielt wird und ich wirklich nicht herausfinden kann, was falsch ist? (Die anderen beiden Optionen funktionieren einwandfrei.)Flask: Kann Wörterbuch in Jinja HTML-Vorlage nicht anzeigen

py code: theBoard = [{1: '', 2: '', 3: '', 4: '', 5: '', 6: '' , 7: ' ' 8:'', 9:‘‚}]

@app.route('/test', methods=["GET", "POST"]) 
def test(): 
    if request.method == 'POST': 
     x = request.form['move'] 
     move = int(x) 
     valid_moves = [1,2,3,4,5,6,7,8,9] 
     if move not in valid_moves: 
      return 'you did not specify a valid move, please try again!' 
     elif theBoard[move] != ' ': 
      return 'you can not play that space, it is taken' 
     else: 
      theBoard[move] = 'X' 
      return render_template("test2.html", theBoard=theBoard) 

    return render_template("test.html") 

HTML-Code:

<table> 
{% for key, value in theBoard.iteritems() %} 
<h1>Key: {{key}}</h1> 
<h2>Value: {{value}}</h2> 
{% endfor %} 
</table> 
+0

Etwas ging falsch mit meiner Einrückung. der erste Code: theBoard = [{1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: ''}} ist ein Teil der .py-Datei –

+0

Ich habe Folgendes im Fehlerprotokoll gefunden: Datei "/home/majaokholm/mysite/flask_app.py", Zeile 19, im Test elif theBoard [move]! = '': IndexError: Listenindex außerhalb des Bereichs –

+0

Es war dort die ganze Zeit, ich habe es gerade jetzt gefunden –

Antwort

0

theBoard ist eine Liste, während in Test() sowie die HTML-schablone Du behandelst es als ein Diktat. Ersetzen Sie die erste Zeile durch den folgenden Code und sehen Sie, ob es funktioniert.

theBoard = {1:' ', 2:' ', 3:' ', 4: ' ', 5:' ', 6: ' ', 7:' ', 8:' ', 9:' '} 
+0

Nein, leider funktioniert es auch nicht. Ich habe Folgendes im Fehlerprotokoll gefunden: Datei "/home/majaokholm/mysite/flask_app.py", Zeile 19, im Test elif theBoard [move]! = '': IndexError: Listenindex außerhalb des Bereichs –

+0

als Kommentar in Ihre Frage (Entschuldigung für das unangemessene Platzieren der Kommentare), versuchen Sie, dasBoard zu einem Diktat zu ändern, und melden Sie dann Ihr Ergebnis. –

+0

Das Protokollelement wird möglicherweise generiert, wenn Sie Ihren vorherigen Code ausführen –

Verwandte Themen