Criação de aplicações web com python

22
Criação de aplicações web com python utilizando o micro-framework Flask.

description

Nesta apresentação, faremos um breve tour sobre esta ferramenta abordando, de forma prática, sua utilização e integração com tecnologias afins, como engine de templates, mapeamento objeto-relacional e gerador de formulários. Apresentação realizada em 29/07/2014 na Worksigma http://worksigma.unisigma.com.br/

Transcript of Criação de aplicações web com python

Page 1: Criação de aplicações web com python

Criação de aplicações web com pythonutilizando o micro-framework Flask.

Page 2: Criação de aplicações web com python

@HelderVieira● Tecnólogo em SI (IFPB)● Pythonista● Analista da CODATA● Empreendedor● Estudante de Gestão

Pública● Músico católico● Flamengo

Page 3: Criação de aplicações web com python

Python

● Linguagem de Programação de alto nível● Interpretada● Imperativa● Orientada a objetos● Funcional● Tipagem dinâmica e forte● Multiplataforma● Multiparadigma

Page 4: Criação de aplicações web com python
Page 5: Criação de aplicações web com python

Flask

● Pocoo project● Criado por Armin Ronacher

○ PSF Membership Roster desde 2012● Lançado em 1º de abril de 2010● Versão atual 0.10.1● Licença BSD

http://flask.pocoo.org/

Page 6: Criação de aplicações web com python

Cinto de utilidades

virtualenv

Version-Control

Python pip

PyCharm

ORM Google-ChromeBootstrap

jQuery

JSON/XML

Page 7: Criação de aplicações web com python

$ virtualenv env

Page 8: Criação de aplicações web com python

$ env/bin/python pip install Flask$ env/bin/python hello.py * Running on http://localhost:5000/

Startando a aplicação...

Page 9: Criação de aplicações web com python

from flask import Flaskapp = Flask(__name__)

Page 10: Criação de aplicações web com python

@app.route("/")def hello(): return "Hello World!"

Page 11: Criação de aplicações web com python

if __name__ == "__main__": app.run()

Page 12: Criação de aplicações web com python

Extensões

● Admin● i18n● CouchDB● Debug / Testes● GAE● Genshi● Gravatar

● Heroku● Login● Mail● Mako● MongoDB● OAuth● OpenID

Continua...

Page 13: Criação de aplicações web com python

Configurando o

from flask_sqlalchemy import SQLAlchemy

app.config[“SQLALCHEMY_DATABASE_URI”] = 'sqlite:///app.db'

db = SQLAlchemy(app)

$ env/bin/pip install Flask-SQLAlchemy

Page 14: Criação de aplicações web com python

Classe Mapeada com SQLAlchemyclass Cidade(db.Model):

__tablename__ = 'cidade'

id = db.Column("id_cidade", db.Integer, db.Sequence('seq_cidade'), primary_key=True)

nome = db.Column(db.String(40), nullable=False )

uf = db.Column(db.String(2), nullable=False, default="PB")

def __unicode__(self): return self.nome

Page 15: Criação de aplicações web com python

Formulários com

$ env/bin/pip install Flask-WTF

from wtforms import DateFieldfrom wtforms import FormFieldfrom wtforms import HiddenFieldfrom wtforms import IntegerFieldfrom wtforms import TextAreaFieldfrom wtforms import TextFieldfrom wtforms import validators as vfrom wtforms.ext.sqlalchemy.fields import QuerySelectField

Page 16: Criação de aplicações web com python

class ItemRequisicaoForm(Form):

grupo_controle = QuerySelectField( u"Grupo de Controle", query_factory=lambda: db.session.query(GrupoControleMaterial).order_by('nome'), allow_blank=True, blank_text=u"Selecione...", validators=[ v.Required(u'Este campo é de preenchimento obrigatório.') ] ) id_material = SelectField( u'Prescrição', choices=[], default=0, coerce=int, validators=[ v.Required(u'Este campo é de preenchimento obrigatório.') ] ) quantidade = IntegerField(u'Quantidade') posologia = TextField() aprazamento = TextField()

Page 17: Criação de aplicações web com python

Templates com o Jinja2{% extends "main_template.html" %}

{% from "macros/form_field.html" import form_field, horizontal_form_field %}

{% block contentArea %}

<form id="form-default" class="form-horizontal" method="POST" role="form">

{% for field in form %}

{% if field.id != 'csrf_token' %}

{{ form_field(field) }}

{% else %}

{{ form.hidden_tag() }}

{% endif %}

{% endfor %}

</form>

{% endblock %}

Page 18: Criação de aplicações web com python

Fazendo algo novo...

from flask import render_template

@app.route("/formulario")

def formulario():

form = ItemRequisicaoForm()

return render_template(“formulario.html”,

form=form)

Page 19: Criação de aplicações web com python

DRY!Don’t repeat yourself!

Page 20: Criação de aplicações web com python

@app.route("/formulario", methods=['GET', 'POST'])

def formulario():

form = ItemRequisicaoForm()

if form.validate_on_submit():

new_item = ItemRequisicao()

form.populate_obj(new_item)

db.session.add(new_item)

db.session.commit()

flash(u'Os dados foram inseridos com sucesso!')

return redirect(url_for(‘index’))

else:

flash(u'Verifique os dados!')

return render_template(“formulario.html”, form=form)

Page 21: Criação de aplicações web com python

Para onde ir a partir daqui?

flask.pocoo.org

python.org

jinja.pocoo.org

wtforms.readthedocs.org

Page 22: Criação de aplicações web com python

Helder Vieirawww.helder.eti.br

[email protected]

Perguntas?Obrigado.