Python Flask - ImmutableMultiDict
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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva