MultiDict é uma subclasse de Dicionário que pode conter vários valores para a mesma chave, ao contrário de Dicionários normais. É usado porque alguns elementos do formulário têm vários valores para a mesma chave e salva os vários valores de uma chave na forma de uma lista.

Exemplo:

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

Saída:

GFG
['GFG', 'Geeks']

Neste artigo, veremos como obter dados MultiDict do formulário no Flask.

Vamos escrever uma página HTML simples com uma tag de formulário e enviá-la para uma rota de frasco. O objeto request.form que é usado para obter o conteúdo do formulário durante a solicitação POST é do tipo ImmutableMultiDict.  

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

Vamos escrever outro arquivo HML que irá encaixar o tipo de dados fornecido pela solicitação POST.

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

Criando aplicativo Flask

Criaremos um aplicativo de flask simples que renderizará o formulário criado acima na URL http://127.0.0.1:5000/input e mostrará os dados enviados usando a solicitação POST na URL http://127.0.0.1: 5000 / salvar

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

Saída:

 Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.