Introducción a Flask
Upcoming SlideShare
Loading in...5
×
 

Introducción a Flask

on

  • 939 views

 

Statistics

Views

Total Views
939
Views on SlideShare
935
Embed Views
4

Actions

Likes
3
Downloads
18
Comments
0

1 Embed 4

http://www.linkedin.com 4

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Introducción a Flask Introducción a Flask Presentation Transcript

  • Luis Cruz @lcruzc Experimento Social
  • ¿Otro más?
  • El ORM de AppEngine es suficiente (para mí)
  • ¡Ya no tengo todos los datos!
  • :(
  • “Micro” framework
  • Keep It Simple, Stupid!
  • Simple y de pequeño tamañoNo toma muchas decisiones por tiConvencionesInstala lo que necesitas
  • $ virtualenv .$ source bin/activate$ bin/pip install Flask
  • Primer Programa (un clásico)
  • from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()
  • $ source ENV/bin/activate$ python hello.py * Running on http:/127.0.0.1:5000/
  • ¿Lo juzgan por su tamaño?
  • ...pues no deberían porque su aliado es la fuerza
  • “based on Werkzeug, Jinja 2 and good intentions.”
  • Así cualquiera...
  • Armin Ronacher
  • Plantillas
  • @app.route("/")def index():! anuncios = Anuncio.all()! return render_template(index.html, anuncios=anuncios)
  • <h1>Anuncios <span class="dark">disponibles</span></h1>{% for anuncio in anuncios %} <div class="post"> <p> <span class="title">{{anuncio.titulo}}</span>! ! {{anuncio.empresa}} - {{anuncio.web}}! </p>! <p>! <a href="{{ url_for(detalle,key=anuncio.key()) }}">Más información</a>! </p> </div>! {% endfor %}
  • <!DOCTYPE HTML PUBLIC "-/ /W3C//DTD HTML 4.01//EN"><html lang="en"><head> {% block head %} <title>{% block title %}{% endblock %} - My Webpage</title> {% endblock %}</head><body> <div id="content">{% block content %}{% endblock %}</div> <div id="footer"> {% block footer %} &copy; Copyright 2008 by you. {% endblock %} </div></body>
  • {% extends "base.html" %}{% block title %}Index{% endblock %}{% block head %} {{ super() }} <style type="text/css"> .important { color: #336699; } </style>{% endblock %}{% block content %} <h1>Index</h1> <p class="important"> Welcome on my awesome homepage. </p>{% endblock %}
  • {% macro input(name, value=, type=text, size=20) -%} <input type="{{ type }}" name="{{ name }}" value="{{value|size="{{ size }}">{%- endmacro %} <p>{{ input(username) }}</p> <p>{{ input(password, type=password) }}</p>
  • Ruteo
  • @app.route("/")def index():! anuncios = Anuncio.all()! return render_template(index.html,anuncios=anuncios)@app.route("/publicar/", methods=("GET", "POST")def publicar():! pass@app.route("/detalle/<key>")def detalle(key): pass
  • app.add_url_rule(/, index, index)app.add_url_rule(/users/<int:user_id>,! ! show_user, methods=[GET, PUT, DELETE])
  • Depurador
  • Y otras cosas sencillas...
  • from flask import render_template@app.errorhandler(404)def page_not_found(error): return render_template(not_found.html),404
  • from google.appengine.api import users@appmain.context_processordef pre_render(): return dictcurrent_userusers.get_current_user())
  • class FlaskrTestCase(unittest.TestCase): def setUp(self): self.app = mymodule.app.test_client() def tearDown(self): pass def test_empty_db(self): rv = self.app.get(/) assert No entries here in rv.data
  • Message FlashingSignals Pluggable ViewsTesting Blueprints
  • Extensiones
  • Flask-Admin Flask-WTFFlask-Babel Flask-CacheFlask-OAuth Flask-MongoKitFlask-SQLAlchemy Flask-OpenIDFlask-MongoKit Y otras!
  • :)
  • Otras razones...
  • Otra herramienta más para tu caja
  • “mejor” en ciertos contextos
  • ...puedes aprender ¡es simple de entender!
  • Flask en proyectos FOSS
  • MoinMoin Wiki(2.0) http://moinmo.in/MoinMoin2.0
  • Sugar WebSDKhttp://git.sugarlabs.org/websdk
  • Inveniohttp://invenio-software.org
  • Opciones de Deploy
  • • Comunidad muy activa y en crecimiento• Excelente documentación• Versión 0.8• Licencia BSD• flask.pocoo.org