Saturday, November 2, 2013

De Django (desencadenado?)

En temas de programación webuda (lease de la web) he dejado al viejo django, why? django es basicamente enrutador, motor de plantillas, ORM, formularios y admin pero:
  • El enrutador no es nada del otro mundo, ahí tenemos a werkseug que es tan bueno como django en eso y tiene además un debuger que dice 4 cosas además de una implementación de request responce al menos no peor que la de django (en lo personal mejor).
  • El motor de plantillas de django no está malo (de ahí salió el twig de synphony, cosa con la que le puedes alardear a tus amiguitos phperos) pero es muy lento, jinja2 que también está basado en el motor de django es entre 10 y 20 veces más rápido, tiene una sintaxis similar y es mucho más pythonico y puede ser incluso más rápido si tienes en cuenta que puedes cachear las plantillas, sí como lo oyes la plantilla solo se interpretará la primera vez, luego solo será código python ejecutandose "Ohhh".
  • El ORM de django es una maravilla hasta que tengas que hacer algo raro en la base de datos o tengas que trabajar con una legada, SQLAlchemy es muuucho mejor en ese sentido, y por otro lado es más rápido y hace todo lo que el ORM de Django, salvo depender de django (ver último punto, al final).
  • Los formularios de django, nada que ver con los de wtforms y estos de casualidad se llevan bien con SQLAlchemy aunque tambien se pueden usar con django.
  • De lo que biene con django si hay algo bueno es Admin pero por desgracia cuando las tablas cresen, digamos 50 000 entradas, se vuelve inutilizable (nunca he tenido una así pero eso dicen algunios que sí las han tenido).
  • ÚLTIMO Y MUY IMPORTANTE todos esos elementos tienes que usarlos con Django, son sus brazos y sus piernas, no funcionan tan bien como deberían y para colmo una vez fuera del cuerpo son inutilizables. Por otro lado las bibliotecas que te mencioné son independientes, así que si aparece una mejor y eres suficientemente organizado puedes quitar y poner sin muchos lios. Además está flask un framework que integra Jinja2, Werkseug y soporta wtforms y SQLAlchemy, además tiene plugins para una infinidad de cosas y un API pythonica (no tiene configuración global, lo cual es un error de diseño del viejo Django).
Una aplicación en Flask?
from flask import Flask  app = Flask(__name__)   
@app.route('/')  def hello_world():
      return 'Hello World!'   
if __name__ == '__main__':
      app.run()  
Si haz programado en ruby y haz visto sinatra se te parecerá un poco, no es cuestión de que Armin Ronacher (el tío detrás de Werkseug, Jinja y Flask) sea un ruin copiador, sino que la idea de sinatra es buena y no hay que tenerle miedo a copiar cosas buenas.

No comments:

Post a Comment