Diferència entre revisions de la pàgina «Email check amb Flask»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 15: Línia 15:
 
* [http://jinja.pocoo.org/docs/dev/templates/ Jinja templates]
 
* [http://jinja.pocoo.org/docs/dev/templates/ Jinja templates]
 
* [[Desenvolupament d'aplicacions web amb frameworks]] a cacauet.org
 
* [[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 <pre>$ source ~/env/bin/activate</pre>
 +
* Activa el mode de DEBUG amb:<pre>$ export FLASK_DEBUG=1</pre>
 +
* Arrenca el servidor amb<pre>$ python main.py</pre>
 +
* Apunta el ''browser'' a<pre>http://localhost:5000</pre>
  
 
== Codi ==
 
== Codi ==

Revisió del 13:57, 7 nov 2016

Aquest és un exemple de com treballar amb el microfamework web Flask per Python.


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:

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

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>