Your SlideShare is downloading. ×
0
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Introducción a Flask
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción a Flask

887

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
887
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
0
Likes
3
Embeds 0
No embeds

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

    ×