Django vs web2py para un desarrollador principiante [cerrado]

83

¿Cuál de estos dos marcos se adapta mejor a un desarrollador con 11 meses de experiencia? Decidí aprender Python para la codificación del lado del servidor y quería saber cuál de estos sería más adecuado para alguien de mi nivel de habilidad. Acabo de pasar unos días jugando con web2py y realmente me gusta y me pregunto si Django ofrece algo más que me estoy perdiendo.

PD. ACTUALIZACIÓN: Gracias a todos por la maravillosa aportación, después de comprar tres libros de django y pasar por algunos pequeños proyectos / tutoriales tanto para django como para web2py, me he decidido por web2py. Este es un marco maravilloso, que hace que el desarrollo web sea realmente divertido para los principiantes. Recomendaría a todos los principiantes que aprendan este marco, ya que será la corriente principal en el futuro. Django también es un marco maravilloso, pero web2py es simplemente mejor en mi opinión de experiencia limitada.

RubyGladiator
fuente
Míralo si ayuda mengu.net/post/django-vs-web2py
Shiv Deepak
1
"Web2py te permite concentrarte en desarrollar tu aplicación, Django no. Quiere que hagas todas sus cosas". Sí, suena como una comparación muy imparcial
user240515
No elija una cita de elección para respaldar su declaración. El artículo no es tan malo.
Ashley
Creo que encontré un tutorial dirigido a principiantes completos para web2py: Killer Web Development
Colin Keenan
1
'si alguna vez ha usado Django ... todo se basa en la herencia. Cuando introdujeron [CBV] se volvió tan complejo que alguien tuvo que crear este sitio solo para explorar el árbol de herencia: ccbv.co.uk '- news.ycombinator.com/item?id=7994281 vs' Otra desventaja es que, porque Los modelos y controladores no se basan en clases, la reutilización eficiente del código se vuelve más difícil, particularmente porque la incapacidad de heredar de un controlador principal ... significa que se debe hacer referencia repetidamente a la funcionalidad del controlador común en todos los archivos del controlador '. - en.wikipedia.org/wiki/Web2py
mistermarko

Respuestas:

107

(descargo de responsabilidad: soy el líder del proyecto de web2py)

Django tiene alrededor de 5 años más que web2py, por lo que tiene más usuarios y más aplicaciones para presumir. Django tiene lo que ellos llaman "admin", que no es lo mismo que el "admin" de web2py, sino más bien el "appadmin" de web2py. El "admin" de Django es mejor y más personalizable que el "appadmin" de web2py. Django no tiene el equivalente de "admin" de web2py. (perdón por la confusión del nombre).

web2py es más compacto y tiene más funcionalidad lista para usar (más bases de datos compatibles, IDE basado en web, sistema de tickets, se ejecuta en GAE sin parches, múltiples métodos de inicio de sesión, control de acceso basado en roles, interfaz de traducción basada en web, soporte para múltiples conexiones de bases de datos transacciones distribuidas y más).

Para mí, la funcionalidad más importante de web2py son las migraciones automáticas. Django no los proporciona de fábrica.

Para web2py, la compatibilidad con versiones anteriores a largo plazo es un objetivo principal, junto con la seguridad. Django es comparable a web2py en términos de seguridad (excepto que web2py tenía prevención CSRF y escape predeterminado en plantillas antes que ellos) pero Django rompió la compatibilidad con versiones anteriores cuando se lanzó 1.0. web2py nunca lo hizo desde octubre de 2007.

Para mí, la sintaxis de web2py es más natural:

 db(db.tablename.fieldname <= value).select() # web2py
 Tablename.objects.filter(fieldname__lt=value) # Django

No conozco ninguna funcionalidad de web2py que no esté presente en Django. He hecho esa pregunta muchas veces porque, si la hay, queremos agregarla a web2py, pero aún no he recibido una respuesta satisfactoria.

Por supuesto que hay cosas que ambos hacemos pero de manera diferente. Django sigue "explícito es mejor que implícito". web2py no lo hace y en su lugar sigue "todo debería tener un comportamiento predeterminado". Creo que esto hace que el código y la configuración de web2py sean más compactos.

De todos modos, elija lo que elija, ambos son buenos marcos web sólidos y hay menos similitudes que diferencias. Los desarrolladores de Django son personas muy inteligentes.

La comunidad de web2py es muy amigable. Como experimento, intente hacer una pregunta en el grupo de google de web2py y en el grupo de Django.

mdipierro
fuente
1
Gracias, esto es algo bueno. Estoy revisando un tutorial de Django para probarlo, la sintaxis de web2py es definitivamente más natural. Con suerte, después tendré una imagen más clara, pero hasta ahora ambos marcos se ven muy bien.
RubyGladiator
11
+1 (aprecio que web2py le permita escribir python directamente en sus vistas)
doug
1
Tengo una pregunta con respecto al ejemplo de web2py que proporcionó (" db(db.tablename.fieldname <= value).select()"), porque no se parece a Python (la parte entre corchetes no asigna valor a uno de los parámetros, sino solo pasa True/ False). ¿Es estándar para web2py o el código que proporcionó es solo una versión simplificada del código web2py de la vida real? ¿Quizás la parte entre paréntesis debería incluirse entre comillas? Por favor explique.
Tadeck
En db (...). Select () el ... no es un valor Verdadero / Falso. db.tablename.fieldname <= value es una expresión que se evaluará como verdadera o falsa en cada registro. Este es el código real de web2py. Sin comillas.
Massimo
4
web2py DAL simplemente proporciona una forma de escribir consultas. Las consultas se convierten en SQL y se envían a la base de datos que devuelve una respuesta. web2py no se ve afectado por la cantidad de registros que hay en la base de datos y no le importa. En otras palabras, si escribo "db (db.tablename.fieldname <= value) .select ()", web2py NO recuperará todos los registros y evitará la condición en cada uno de ellos. Si va a consultar la base de datos para "SELECT * FROM TABLENAME WHERE FIELDNAME = '1'".
Massimo
23

Tanto Django como web2py son excelentes marcos web de 'pila completa' con características y capacidades similares; no se perderá mucho como principiante con ninguno de los marcos.

Es difícil responder a su pregunta sin saber más sobre lo que quiere hacer con su aprendizaje. Algunos dirían que existe el peligro de aprender el marco y no el lenguaje, por lo que sería mejor obtener una comprensión más profunda del lenguaje Python y los marcos más ligeros (por ejemplo, Flask o wekzeug ) primero.

Dicho esto, web2py tiene una curva de aprendizaje inicial más baja que Django, ya que fue diseñado específicamente como una herramienta de aprendizaje . Así que diría que ha hecho una buena elección. El aprendizaje nunca se desperdicia y si decide que necesita algo más en el futuro, las buenas técnicas que habrá aprendido con web2py no se desperdiciarán.

Aunque hay más recursos de aprendizaje para Django, ya que ha existido por más tiempo y tiene más usuarios, aprender web2py también es rápido debido al excelente libro y las respuestas casi instantáneas a las preguntas del grupo de usuarios .

Si está buscando un trabajo, hay más trabajos de Django, por lo que ese podría ser un factor. Habiendo dicho eso, la comunidad web2py ha creado expert4solutions recientemente donde puede promover sus habilidades y disponibilidad en el futuro.

¡Que te diviertas!

bits de teclado
fuente
Gracias Knitatoms, de hecho aprendí ruby ​​y estoy cruzando y aprendiendo python, que parece muy similar hasta ahora. Con respecto a lo que me gustaría hacer con un marco, esto sería simplemente construir una startup web en un futuro cercano. También me gustaría construir algo usando jquerymobile ya que he estado jugando con él.
RubyGladiator
2
Es interesante escucharlo: estoy en una posición similar y, como trabajaré para mí mismo y, por lo tanto, elegiré mi propio marco, fui con web2py y estoy feliz hasta ahora.
teclas
10

Soy un novato completo con Web2py y DJango, pero quería un marco web que fuera pythonic para jugar, aprender y crear una interfaz para una base de datos simple. Miré web2py pero no pude encontrar ningún tutorial decente, dirigido a principiantes completos, cuando instalé web2py, lo cual fue muy fácil, no sabía qué hacer a continuación, parecía no haber tutoriales que me guiaran cómo crear una aplicación web sencilla (no solo hola mundo). Por otro lado, DJango hizo Writing your first DJango App Part 1 . Esto ha sido realmente bueno, ya que le dio a un novato una introducción sobre cómo configurar y usar el marco escribiendo una aplicación web simple. Hasta que Web2Py ofrezca esto, mi voto es para DJango.

usuario595985
fuente
Aprendí Web2py al no conocer Python o bases de datos en absoluto viendo: youtube.com/… Poco después construí dos servicios web de producción para una empresa a gran escala y una base de usuarios con Web2py. ¡Muchas gracias a la comunidad de grupos de Google!
Preactiva
6

En muchas palabras: (como entendí)

Web2py es definitivamente más fácil y hace que el código sea más simple y limpio. Pero Django le brinda una mejor comprensión de lo que está sucediendo y también más poder para modificar el diseño / proceso.

Web2py se centra más en "lo simple es mejor que lo complejo", pero Django se centra más en "lo explícito es mejor que lo implícito". Dos partes de The Zen of Python, por lo que es muy difícil decir qué marco es más Pythonic.

saeedgnu
fuente
9
De hecho, a veces encuentro que Web2Py es bastante opuesto, complicado, lo cual va en contra de "lo complejo es mejor que complicado ". Compatibilidad con versiones anteriores, nombres duplicados, ejecución implícita de varios archivos, variables globales colgadas en todas partes: todos estos problemas dieron como resultado un marco de Python que va más bien en contra de la filosofía de Python.
Tadeck