O documento explica como criar aplicações web com Python utilizando o micro-framework Flask, descrevendo o Flask, suas extensões e como configurar formulários, modelos de dados e templates.
Python
● Linguagem deProgramação de alto nível
● Interpretada
● Imperativa
● Orientada a objetos
● Funcional
● Tipagem dinâmica e forte
● Multiplataforma
● Multiparadigma
5.
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/
Configurando o
from flask_sqlalchemyimport SQLAlchemy
app.config[“SQLALCHEMY_DATABASE_URI”] = 'sqlite:///app.db'
db = SQLAlchemy(app)
$ env/bin/pip install Flask-SQLAlchemy
14.
Classe Mapeada comSQLAlchemy
class 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
15.
Formulários com
$ env/bin/pipinstall Flask-WTF
from wtforms import DateField
from wtforms import FormField
from wtforms import HiddenField
from wtforms import IntegerField
from wtforms import TextAreaField
from wtforms import TextField
from wtforms import validators as v
from wtforms.ext.sqlalchemy.fields import QuerySelectField
16.
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()
17.
Templates com oJinja2
{% 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 %}
@app.route("/formulario", methods=['GET', 'POST'])
defformulario():
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)
21.
Para onde ira partir daqui?
flask.pocoo.org
python.org
jinja.pocoo.org
wtforms.readthedocs.org