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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,032
On Slideshare
1,028
From Embeds
4
Number of Embeds
1

Actions

Shares
Downloads
18
Comments
0
Likes
3

Embeds 4

http://www.linkedin.com 4

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \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

Transcript

  • 1. Luis Cruz @lcruzc Experimento Social
  • 2. ¿Otro más?
  • 3. El ORM de AppEngine es suficiente (para mí)
  • 4. ¡Ya no tengo todos los datos!
  • 5. :(
  • 6. “Micro” framework
  • 7. Keep It Simple, Stupid!
  • 8. Simple y de pequeño tamañoNo toma muchas decisiones por tiConvencionesInstala lo que necesitas
  • 9. $ virtualenv .$ source bin/activate$ bin/pip install Flask
  • 10. Primer Programa (un clásico)
  • 11. from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.run()
  • 12. $ source ENV/bin/activate$ python hello.py * Running on http:/127.0.0.1:5000/
  • 13. ¿Lo juzgan por su tamaño?
  • 14. ...pues no deberían porque su aliado es la fuerza
  • 15. “based on Werkzeug, Jinja 2 and good intentions.”
  • 16. Así cualquiera...
  • 17. Armin Ronacher
  • 18. Plantillas
  • 19. @app.route("/")def index():! anuncios = Anuncio.all()! return render_template(index.html, anuncios=anuncios)
  • 20. <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 %}
  • 21. <!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>
  • 22. {% 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 %}
  • 23. {% 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>
  • 24. Ruteo
  • 25. @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
  • 26. app.add_url_rule(/, index, index)app.add_url_rule(/users/<int:user_id>,! ! show_user, methods=[GET, PUT, DELETE])
  • 27. Depurador
  • 28. Y otras cosas sencillas...
  • 29. from flask import render_template@app.errorhandler(404)def page_not_found(error): return render_template(not_found.html),404
  • 30. from google.appengine.api import users@appmain.context_processordef pre_render(): return dictcurrent_userusers.get_current_user())
  • 31. 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
  • 32. Message FlashingSignals Pluggable ViewsTesting Blueprints
  • 33. Extensiones
  • 34. Flask-Admin Flask-WTFFlask-Babel Flask-CacheFlask-OAuth Flask-MongoKitFlask-SQLAlchemy Flask-OpenIDFlask-MongoKit Y otras!
  • 35. :)
  • 36. Otras razones...
  • 37. Otra herramienta más para tu caja
  • 38. “mejor” en ciertos contextos
  • 39. ...puedes aprender ¡es simple de entender!
  • 40. Flask en proyectos FOSS
  • 41. MoinMoin Wiki(2.0) http://moinmo.in/MoinMoin2.0
  • 42. Sugar WebSDKhttp://git.sugarlabs.org/websdk
  • 43. Inveniohttp://invenio-software.org
  • 44. Opciones de Deploy
  • 45. • Comunidad muy activa y en crecimiento• Excelente documentación• Versión 0.8• Licencia BSD• flask.pocoo.org