Django: primeras impresiones

05 Aug 2010


Bueno, como ahora mismo no tengo un trabajo formal (si se le puede llamar de alguna manera) he decidido poder dedicar el mayor tiempo posible (y disponible) para aprender cosas nuevas.

Lo primero que hice fue repasar lo que había aprendido hace un par de años de Python. Aunque trabajo mas con PHP que con otro lenguaje de programación siempre me ha gustado Python, entre las razones están: Su sintaxis me encanta. Es elegante y al grano. El uso de whitespace indentation en vez de curly braces ({) también me gusta mucho. Hace que hasta el código que no es tuyo parezca tuyo. Es un lenguaje multipropósito. Es bastante fácil de aprender a utilizar. En otros países es el primer lenguaje de programación que se da (en Panamá se da primero C, algo loco). La comunidad es gigante. Al ser multipropósito también podría utilizarlo para la web y ahí aparece Django. Aunque lo había usado en su versión 0.96 hace un par de años ahora van por la 1.2.1 y ha cambiado ligeramente. Al venir de PHP vengo utilizando por más de 2 años CodeIgniter como framework, por otras tantas razones (curva de aprendizaje ridícula, buena comunidad, rápido de desarrollar, flexible, etc). Ahora que trato de re-aprender a utilizar Django realmente hay cosas que me gustan mucho de este framework y otras que quizás no me gustan mucho (en comparación con CodeIgniter - aunque cabe destacar que no tengo mucha experiencia en Django). Luego de estar aprendiéndolo a utilizar hay ciertas cosas que extraño de CodeIgniter en Django: Aprenderlo a utilizar no es tan fácil. La curva de aprendizaje es mucho mayor. Extraño como las URLs se comportan en CodeIgniter (controller/method/arg1/arg2): En Django hay que mapear cualquier URL. A veces me confundo con el término View: Django no es MVC (Model View Controller) es MTV (Model Template View) donde el Template es lo que conocemos como View (en CI) y el View es lo que conocemos como Controller (en CI). Helpers y libraries: Realmente aún me confunde como funcionan las cosas acá. En CodeIgniter hay librerías y helpers para todo, hasta para hacer vínculos. Que me gusta de Django que no veo en CodeIgniter: Los Models son un ORM puro y es muy poderoso: CodeIgniter le hace falta un buen ORM y aunque se puede integrar con Doctrine, con algunos pequeños problemas, debería servir integralmente (como ocurre en Symfony). El Auto Admin: Esto es genial. Sólo con importar la aplicación de administración ya tenemos un panel de administración funcional. En Symfony he visto que esto está desarrollandose, pero no he visto nada parecido en CodeIgniter. Mucho menos código: con Django, con todo y que es algo complicado, todo es mucho más corto. De por si Python es un lenguaje donde se escribe poco y se logra mucho, lo mismo pasa entre estos 2 frameworks. En fin, es una opinión personal luego de un par de semanas usando, por quizás primera vez, el framework… quizás me vaya para Ruby on Rails :P


Demóstenes García G.

Ingeniero Electrónico con experiencia en Ingeniería y Desarrollo de Software. Agilista, interesado en Analítica y Ciencia de Datos. Co-fundador en Pixmat, CIO en IFARHU. Twitter.