MultiDict ist eine Unterklasse von Dictionary, die im Gegensatz zu normalen Dictionaries mehrere Werte für denselben Schlüssel enthalten kann. Es wird verwendet, weil einige Formularelemente mehrere Werte für denselben Schlüssel haben, und es speichert die mehreren Werte eines Schlüssels in Form einer Liste.

Beispiel:

Python3

from werkzeug.datastructures import MultiDict
  
orders = MultiDict([(1, 'GFG'), (1, 'Geeks')])
print(orders[1])
  
print(orders.getlist(1))

Ausgabe:

GFG
['GFG', 'Geeks']

In diesem Artikel erfahren Sie, wie Sie MultiDict-Daten aus dem Formular in Flask abrufen.

Lassen Sie uns eine einfache HTML-Seite mit einem Form-Tag schreiben und sie an eine Flask-Route senden. Das Objekt request.form, das verwendet wird, um den Inhalt des Formulars während der POST-Requests abzurufen, ist vom Typ ImmutableMultiDict.  

Index.HTML

HTML

<!DOCTYPE html>
<html>
   <head>
      <title>Input Page</title>
   </head>
   <body>
      <form method='POST' action="save">
         <input type="text" name="username" id="uname"/>
         <input type="submit" value="Submit"/>
      </form>
   </body>
</html>

Lassen Sie uns eine weitere HML-Datei schreiben, die den Datentyp der POST-Anforderung enthält.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
{{userInput}}
</body>
</html>

Flask-App erstellen

Wir werden eine einfache Flask-App erstellen, die das oben erstellte Formular unter der URL http://127.0.0.1:5000/input rendert und die mit der POST-Requests unter der URL http://127.0.0.1 übermittelten Daten anzeigt: 5000/sparen

Python3

from flask import Flask, render_template, request, redirect, url_for
  
app = Flask(__name__)
  
@app.route('/input', methods=['GET'])
def input():
    return render_template('index.html')
  
@app.route('/save', methods=['POST'])
def save():
    
    userInput = request.form
    return render_template('home.html', userInput=userInput)
  
if __name__ == '__main__':
    app.run()

Ausgabe: