CakePHP y django

Estoy haciendo las primeras pruebas con CakePHP y viene bastante bien. Si bien muchas cosas ya las había visto en django, CakePHP no tiene nada que envidiarle.

Ambos son dos frameworks basados en MVC. Al parecer ambos muy parecidos a Rails, aunque todavía no he tenido el gusto de jugar con este.
MVC significa, muy por arriba, Modelo Vista Controlador. Si bien django se declara MTV, variante Modelo Template View, la idea es muy similar.

Ambos manejan Modelo como un ORM. Respecto al Modelo CakePHP se basa en extender una clase llamada AppModel que nos provee las funcionalidades CRUD. Esto es similar a los Models de django que heredan de models.Model. Lo más cómodo de CakePHP es que interpreta solo las tablas de la base de datos, si seguimos cierta nomenclatura. También me gusta más la manera que se definen las relaciones. Por otra parte, django tenía las factories de campos y generaba las tablas a partir de cómo había armado el “Modelo”. No digo que una cosa sea mejor que la otra, digo que me gusta más trabajar así.

Los controladores ya no tan son parecidos. Los controladores de django las “views” eran funciones que recibían el request y los parámetros. Para que estos views funcionaran había que asociarlos con una regla de rewrite (idénticas a las de Apache), requería definir a mano un dispatcher (siempre que no se usen genéricos). Estos retornaban un review e indicaban el template al que se asociaban. En CakePHP por cada modelo tengo que definir una clase que hereda de una clase AppController. Definiendo un método para esta clase ya tengo hecho el despacho. Estos métodos se llaman actions.

Las vistas son tal vez el punto más divergente. Es que django tiene su propio sistema de Templates (o Maquetación). Este era un poco extraño al principio, pero con un par de pruebas se terminaba manejando. CakePHP tiene un sistema de Templates que es medio un no-sistema de templates: son tags php los cuales utilizan variables y objetos que se le pasan desde el controlador. No es que en django no pase algo similar, sino que esto es casi como programar los templates en php. En esto me recuerda bastante a este artículo donde se charla acerca de la utilidad de los templates. Así que no hay nada raro en el sistema de templates, los tags y los foreach para iterar listas.

Lo que se extraña es el admin de django. Y estoy medio frustrado porque todavía no pude hacer andar los scaffolds (andamios). Al parecer son como los generics views de django.

Otra cosa que me gusta más de django es el concepto de aplicación bien esquematizado por directorios namespaces. Y de ahí vienen las ventajas de django de estar basado en python que es mucho más elegante como lenguaje orientado a objetos que php. CakePHP utiliza un árbol de directorios donde guardo las vistas en un directorio, los modelos en otro y los controladores en otro más. Si bien hay maneras de separar, esta todo apilado.

Pero irónicamente, la fortaleza de CakePHP es estar desarrollado en php. Y encima compatible con php4 y php5. No voy a entrar en la gran discusión acerca de las ventajas y las limitaciones de php y su relación con los objetos.

Acá en Argentina es mucho más sencillo encontrar hostings que soporten php que python. De hecho prácticamente todos soportan php. El despliegue de django en cambio requiere modificar la configuración de Apache y cargar un módulo más, cosa que pone los pelos de punta de los proveedores de hostings.

Y a nivel global, php sigue siendo el lenguaje web más extendido, no sé si por su flexibilidad o su sencillez, pero creo que tiene mucho que ver la gran comunidad que lo respalda y trabaja con él. La documentación es amplia, todo lo que te puede pasar ya le pasó a alguien. En eso CakePHP me parece que tiene mucho campo para crecer.

Etiquetas: , , , ,

7 comentarios to “CakePHP y django”

  1. walter Says:

    Le puse las fichas al cakephp y estoy armando algunas aplicaciones. Me parece que va a tener un buen futuro. Hay gente con mucha experiencia atras del desarrollo del core.
    Saludos

  2. Miguel Carboni Says:

    Recientemente estaba leyendo que la versión nueva de mambo (CMS) se va a hacer sobre CakePHP, y hay dos proyectos interesantes para enlazar CakePHP con joomla y drupal. De esta manera podés correr aplicaciones CakePHP dentro de sitios sin tocarlas.
    Gracias por el comentario.
    Saludos!

  3. Jose Says:

    vengo trabajando con cakephp desde hace un buen tiempo y la verdad me fue bastante bien. Sin embargo al aprender RoR y django me di cuenta que a pesar de que tenia nula experiencia con los dos ultimos, las aplicaciones me salian mas rapido. Además el codigo se veía mucho mas entendible y organizado. Ahora utilizo django y me siente bastante comodo con el.

  4. Miguel Carboni Says:

    Definitivamente la gran ventaja que tienen es la capacidad de generar aplicaciones en menos tiempo porque entre otras cosas tenés los ABMs, herramientas para validar campos, el mapeo objeto-relacional, y como bien decís el código es mucho más entendible y organizado, luego más extensible y mantenible.
    ¡Gracias por contar tu experiencia!

  5. Gonzalo Servat Says:

    Hola a todos,

    Ha pasado mucho tiempo desde el último comentario que escribió Miguel, pero supuse que les podria llegar a interesar saber que estan organizando un “CakeFest” en Buenos Aires para el mes que viene. Les dejo un link:

    http://www.cakefest.org

    Saludos!
    Gonzalo

  6. Hugo Pineda Says:

    Hola, muy buen artículo, pero hoy en día si que vale la pena desarrollar con Python ya que gracias al google application engine ya no es necesario buscar hosting, y dan soporte para aplicaciones Django lo que es realmente bueno.

    Saludos

  7. eveevans Says:

    si bien es cierto que Django esta siendo mas impulsando , php es mucho mas difundido, en el caso que citan el APp Engine de google, hay q destacar que no esta disponible en latinoamerica y que Django esta soportado solo parcialmentem
    por el momento estoy aprendiendo paralelamente cake y Django,
    luego les escribo mi experiencia

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: