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

Like this? Share it with your network

Share

Introducción a Flask

on

  • 1,009 views

 

Statistics

Views

Total Views
1,009
Views on SlideShare
1,005
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 Presentation 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