Diferencia entre revisiones de «Usuario:Lmorillas/desarrollo web servidor/flask/ejemplo completo»

De WikiEducator
Saltar a: navegación, buscar
(Enviando correo)
(Enviando correo)
Línea 111: Línea 111:
  
 
== Enviando correo ==
 
== Enviando correo ==
* flask-mail
+
* Estensión: flask-mail
 
   pip install flask-mail
 
   pip install flask-mail
 
<source lang="python">
 
<source lang="python">

Revisión de 10:22 9 nov 2013



Previo







Icon activity.jpg

Instalar MySQL

$ sudo apt-get install mysql-server mysql-client
$ sudo apt-get install libmysqlclient-dev
$ mysql -u username -p
Enter password:
mysql> CREATE DATABASE development;
$ pip install mysql-python





Estructura inicial

Icon objectives.jpg

Objetivo

* Crear proyecto en eclipse
  • Preparar intérprete con virtualenv
  • Crear estructura inicial del proyecto
  • Iniciar repositorio local
  • .hgignore
Icon present.gif


Páginas estáticas. Home y about

Icon objectives.jpg

Objetivo

  • Páginas estáticas home y about
  • Estructura de templates:
 layout.html
 home.html
 about.html
  • Vistas y rutas (decoradores)
Icon present.gif



Formulario de contacto

Icon objectives.jpg

Objetivo

  • Formulario para contacto: instalar flask-wtf
  • Creación del formulario
  • Uso del formulario: GET y POST
  • Template
Icon present.gif



Estilo en formulario de contacto

Icon objectives.jpg

Objetivo

  • Modificar hoja de estilos
Icon present.gif



Validación de formularios

Icon objectives.jpg

Objetivo

  • Campos obligatorios
  • Campo email
Icon present.gif



Mensajes de error

Icon objectives.jpg

Objetivo

  • Mensajes de error genéricos
  • Mensajes de error por campo
Icon present.gif



Mensajes específicos de error

Icon objectives.jpg

Objetivo

  • Mostrar un mensaje específico de error para cada input del formulario
{% for mensaje in form.nombre.errors %}
    <div class="flash">{{ mensaje }}</div>
  {% endfor %}
 
  {% for mensaje in form.email.errors %}
    <div class="flash">{{ mensaje }}</div>
  {% endfor %}
 
  {% for mensaje in form.asunto.errors %}
    <div class="flash">{{ mensaje }}</div>
  {% endfor %}
 
  {% for mensaje in form.mensaje.errors %}
    <div class="flash">{{ mensaje }}</div>
  {% endfor %}


Enviando correo

  • Estensión: flask-mail
 pip install flask-mail
from flask.ext.mail import Message, Mail 
 
# configuración
MAIL_SERVER = "smtp.gmail.com"
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'dwesdaw@gmail.com'  # en mi ejemplo
MAIL_PASSWORD = 'tu password'
 
def contacto():
    form = ContactForm()
 
...
        else:
            msg = Message(form.asunto.data, sender='dwesdaw@gmail.com', 
                          recipients=['destinatario'])
            msg.body = """
            From: %s <%s>
            %s
            """ % (form.nombre.data, form.email.data, form.mensaje.data)
 
            mail.send(msg)
            return render_template('contacto.html', exito=True, nombre = form.nombre.data   )
...

Exito en email

Menú contactos

Configuración base de datos

Modelo de usuario

Página de perfil

Entrar y salir

Despliegue en Apache

Despliegue en Heroku

Configuración

conf.py

SECRET_KEY = '\x84\xed\xca\xe36\x8d\x17\xd4\xb3X\xfd1\xdfJx\xc6\xe9\xcf\x00\xdf\x9e \xa9l'
 
MAIL_SERVER = "smtp.gmail.com"
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'dwesdaw@gmail.com'  # en mi ejemplo
MAIL_PASSWORD = 'tu password'
 
SQLALCHEMY_DATABASE_URI = 'mysql://userflask:*******@localhost/appFlask'

app.py

from conf import *
 
... 
 
app = Flask(__name__)
app.config.from_object(__name__)
 
...

Documentación adicional