Diferència entre revisions de la pàgina «Email check amb Flask»
(→Intro) |
(→Codi) |
||
Línia 23: | Línia 23: | ||
== Codi == | == Codi == | ||
+ | El projecte tindrà 2 arxius: | ||
+ | * main.py : té el codi que processa les dades. | ||
+ | * checkmail.html : plantilla HTML+Jinja2. S'encarrega de la part gràfica, hem d'intentar calcular la menor quantitat de coses possibles. | ||
+ | |||
+ | |||
+ | === Arxiu .py === | ||
Aquest és el codi per a l'arxiu .py: | Aquest és el codi per a l'arxiu .py: | ||
Línia 32: | Línia 38: | ||
@app.route("/checkemail", methods=["GET","POST"]) | @app.route("/checkemail", methods=["GET","POST"]) | ||
def checkemail(): | def checkemail(): | ||
− | + | missatge = "No has enviat cap email encara per comprovar." | |
− | + | if request.method == "POST": | |
− | + | email = request.form["email"] | |
− | + | # quan posem accents cal avisar que és un string unicode amb la "u" a davant | |
− | + | missatge = "L'email <b>" + email + u"</b> és incorrecte ja que no té una @" | |
− | + | # busquem que el email contingui al menys una @ i un . | |
− | + | trobat = 0 | |
− | + | for lletra in email: | |
− | + | if trobat==0 and lletra=='@': | |
− | + | trobat = 1 | |
− | + | missatge = "L'email <b>" + email + u"</b> té una @ pero li falta un . del domini posterior" | |
− | + | elif trobat==1 and lletra=='.': | |
− | + | trobat = 2 | |
− | + | missatge = "L'email <b>" + email + u"</b> és correcte! (te una @ i un . de domini)" | |
− | + | return render_template( "checkemail.html", missatge=missatge ) | |
if __name__ == "__main__": | if __name__ == "__main__": | ||
Línia 60: | Línia 66: | ||
<body> | <body> | ||
− | <h2>Validació de email</h2 | + | <h2>Validació de email</h2> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | + | <div class="missatge"> |
− | + | {{missatge|safe}} | |
− | + | </div> | |
− | + | <br> | |
+ | <form method="post"> | ||
+ | Introdueix adreça d'email a comprovar: <input type="text" name="email" /><br> | ||
+ | <input type="submit"> | ||
+ | </form> | ||
</body> | </body> | ||
</html> | </html> | ||
</syntaxhighlight> | </syntaxhighlight> |
Revisió del 14:11, 7 nov 2016
Aquest és un exemple de com treballar amb el microfamework web Flask per Python.
Contingut
Intro
Realitzarem una simple aplicació que agafi les dades d'un formulari per POST i ens validi si el email enviat és correcte o no.
Per decidir si el email és correcte farem una simple comprovació: primer ha d'aparèixer una @ i més tard, com a mínim un punt "." (corresponent al domini del correu). Si no té aquests dos elements el donarem per erroni i ho notificarem a l'usuari.
Per poder fer aquesta pràctica heu d'haver llegir i provar el primer exercici de Desenvolupament d'aplicacions web amb frameworks a cacauet.org
Referències:
- flask.pocoo.org
- Flask Quickstart doc
- Python: introducció ràpida
- Jinja templates
- Desenvolupament d'aplicacions web amb frameworks a cacauet.org
Recorda els diversos passos per començar el projecte:
- Has de tenir un Virtualenv per instal·lar els paquets de Python necessaris (Flask). Recorda a activar-lo amb
$ source ~/env/bin/activate
- Activa el mode de DEBUG amb:
$ export FLASK_DEBUG=1
- Arrenca el servidor amb
$ python main.py
- Apunta el browser a
http://localhost:5000
Codi
El projecte tindrà 2 arxius:
- main.py : té el codi que processa les dades.
- checkmail.html : plantilla HTML+Jinja2. S'encarrega de la part gràfica, hem d'intentar calcular la menor quantitat de coses possibles.
Arxiu .py
Aquest és el codi per a l'arxiu .py:
# -*- coding: utf-8 -*-
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/checkemail", methods=["GET","POST"])
def checkemail():
missatge = "No has enviat cap email encara per comprovar."
if request.method == "POST":
email = request.form["email"]
# quan posem accents cal avisar que és un string unicode amb la "u" a davant
missatge = "L'email <b>" + email + u"</b> és incorrecte ja que no té una @"
# busquem que el email contingui al menys una @ i un .
trobat = 0
for lletra in email:
if trobat==0 and lletra=='@':
trobat = 1
missatge = "L'email <b>" + email + u"</b> té una @ pero li falta un . del domini posterior"
elif trobat==1 and lletra=='.':
trobat = 2
missatge = "L'email <b>" + email + u"</b> és correcte! (te una @ i un . de domini)"
return render_template( "checkemail.html", missatge=missatge )
if __name__ == "__main__":
app.run()
Template
I aquí tenim el template. Recordem que Flask utilitza Jinja2 per defecte.
<html>
<body>
<h2>Validació de email</h2>
<div class="missatge">
{{missatge|safe}}
</div>
<br>
<form method="post">
Introdueix adreça d'email a comprovar: <input type="text" name="email" /><br>
<input type="submit">
</form>
</body>
</html>