Your SlideShare is downloading. ×
0
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__":  ...
$ 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>      ...
<!DOCTYPE HTML PUBLIC "-/       /W3C//DTD HTML 4.01//EN"><html lang="en"><head>    {% block head %}       <title>{% block ...
{% extends "base.html" %}{% block title %}Index{% endblock %}{% block head %}   {{ super() }}   <style type="text/css">   ...
{% macro input(name, value=, type=text, size=20) -%}    <input type="{{ type }}" name="{{ name }}" value="{{value|size="{{...
Ruteo
@app.route("/")def index():! anuncios = Anuncio.all()! return render_template(index.html,anuncios=anuncios)@app.route("/pu...
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...
from google.appengine.api import users@appmain.context_processordef pre_render():   return dictcurrent_userusers.get_curre...
class FlaskrTestCase(unittest.TestCase):    def setUp(self):        self.app = mymodule.app.test_client()    def tearDown(...
Message FlashingSignals      Pluggable ViewsTesting          Blueprints
Extensiones
Flask-Admin        Flask-WTFFlask-Babel        Flask-CacheFlask-OAuth        Flask-MongoKitFlask-SQLAlchemy   Flask-OpenID...
:)
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
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
×

Introducción a Flask

896

Published on

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

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

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 of "Introducción a Flask"

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×