
Ayudemos a los desarrolladores a determinar si el marco Django es adecuado para su próximo proyecto. Es probable, adecuado.
No se aferre a un marco o lenguaje de programación en particular solo porque lo utilizó en su proyecto anterior o simplemente porque está familiarizado con él. Entonces las cosas no están hechas.
Antes de embarcarse en un nuevo proyecto, debe evaluar qué lenguaje o marco es mejor para lograr el resultado deseado. ¿Qué es lo más importante para ti? ¿Seguridad, velocidad de desarrollo, escalabilidad, versatilidad, soporte?
Es mejor tomar una decisión informada antes de comenzar a trabajar que arrepentirse más rápido (o, lo que es peor, colgar muletas en el proyecto en el proceso de implementación, debido al hecho de que no le importaba su apoyo por adelantado).
He trabajado con varias tecnologías durante muchos años, me ocupé del desarrollo móvil y web, y creo que Django ofrece un conjunto tan completo de características que no se encuentran en ningún otro marco web.
Entiendo que esta es una declaración fuerte. Déjame justificarlo.
“Django tiene muchos sitios que se usan de manera más activa, en particular Instagram y Pinterest. Incluso Facebook usa Django para muchas de sus utilidades. Django nació en un entorno editorial, por lo que no es sorprendente que este marco se utilice en sitios como The Washington Post y Smithsonian Magazine ". - Amit Ashvini , Vicepresidente de Marketing @ Zibtek
Vista general: cuándo usar Django
Si al menos algunos de los puntos a continuación se refieren a usted (y no hay puntos en la lista con los que esté totalmente en desacuerdo), es probable que Django sea una buena opción para su proyecto.
- Necesita desarrollar una aplicación web o API de back-end.
- Debe trabajar rápidamente, implementar rápidamente y realizar cambios en el proyecto mientras trabaja.
- Por defecto, la aplicación debe estar protegida de las vulnerabilidades y ataques más comunes, en particular: CSRF, inyección SQL, XSS, clickjacking, etc.
- En cualquier momento, puede ser necesario escalar en la aplicación: tanto escalar como reducir.
- En el futuro, planea integrar las últimas tecnologías, por ejemplo, el aprendizaje automático.
- Debe utilizar un marco confiable que se esté desarrollando activamente, utilizado por muchas de las principales empresas y sitios web líderes de todo el mundo.
- Se requiere que tanto la aplicación web como el lado del servidor de la API estén en la misma base de código, de acuerdo con la "fuente única de verdad" (principio DRY)
- No desea trabajar directamente con consultas a la base de datos y necesita soporte ORM.
- Vas a usar software libre.
- Si se atasca, deberá buscar una solución usted mismo, por lo que necesitará una buena documentación y una comunidad de desarrolladores receptiva.
Además de los factores anteriores, debe considerar qué habilidades tiene usted (o su equipo).
Si usted es un desarrollador web y ya sabe cómo funciona la web, trabajar con Django le resultará relativamente fácil. Debe comprender cómo está estructurado Django, y algunas otras cosas, por supuesto, también, y considerar que está listo.
Sitios que se ejecutan en el marco de Django
La historia de Django se remonta a unos 10 años. Durante este período, se utilizó en la producción en muchos sitios principales. Aquí hay algunos ejemplos sobresalientes:
Ingeniería de PinterestMozillaBitbucketUdemyLa cebollaDisqusWashington PostNASASpotifyIngeniería de InstagramGeográfico nacionalEl guardiánJsfiddle¿Todavía tienes dudas sobre si vale la pena dedicar tu valioso tiempo a practicar con Django? Para comenzar, analicemos por qué Django podría NO SER ADECUADO para su proyecto:
Cuando no usar Django
- Se trata de una aplicación colosal, y simplemente no cabe en una base de código. Sería mejor dividir su aplicación en microservicios. Cada uno de sus niveles está mejor manejado por un equipo dedicado. Para cada caso de uso específico, otras tecnologías son adecuadas. En algunos de estos escenarios, Django puede ser útil, pero no sería práctico desarrollar completamente una aplicación de este tipo en Django (así como en cualquier otro marco separado).
- Debe escribir una aplicación simple en la que no necesite trabajar con una base de datos, realizar operaciones de archivo o hacer algo al menos un poco complicado.
Los microframes son los más adecuados para tales situaciones. Uno de los microframes más populares: Flask, como Django, está escrito en Python. Microframes similares están disponibles en otras tecnologías, por ejemplo. Slim en PHP, Apache Spark en Java, Express.js en Node.js, etc. - Desea escribir todo usted mismo desde cero y sabe lo que está haciendo.
- Usted o sus colegas no están completamente familiarizados con Django / Python, y no tienen el tiempo y los recursos para desarrollar las habilidades necesarias.
La mejor solución en este último caso es trabajar con lo que mejor sabe. Si adoptas una nueva tecnología o marco, entonces las posibilidades de fastidiar aumentan muchas veces.
Si todo lo anterior no se trata de su proyecto, es probable que Django le convenga.
Razones para usar Django
El framework Django está escrito en Python:
Sé que lo sabes.
Por lo tanto, aprovecharé esta oportunidad y enfatizaré algunas de las ventajas clave de Django que heredó de Python. Seré breve
Python es uno de los lenguajes de programación más populares y de más rápido crecimiento en el mundo.
Fuentes:
Índice TIOBEAnálisis de datos de Indeed.com Jobs por Coding DojoOctoverso de GithubAprender Python es realmente muy simple. Por lo general, los desarrolladores modernos son los primeros en aprender este idioma en particular.
Lo anterior no significa en absoluto que este lenguaje sea solo para principiantes. Python también se utiliza en tecnología de punta. Python se usa activamente en la pila tecnológica de muchas compañías gigantes, incluida Google.
Python es ideal para desarrollar herramientas de raspado web.
Interactúa bien con otros idiomas.
El desarrollo de Python no significa que se verá obligado a escribir todo solo en Python.
Es posible que pueda usar bibliotecas para muchos otros lenguajes, incluidos C / C ++ / Java.
Python es portátil, fácil de leer.
Python incluso puede ejecutarse en la JVM. Conozca a
Jython .
Python es ampliamente utilizado en tecnologías tan populares como Big Data y Machine Learning.
Tienes acceso a la enorme biblioteca PyPI.
Todo incluido de Django
"Todo incluido" significa que Django está listo para usar y está equipado con la mayoría de las bibliotecas y herramientas necesarias en situaciones prácticas comunes. Enumeraré: Django ORM, middleware, autenticación, bibliotecas HTTP, soporte multisitio, i18n, Django Admin, motor de plantillas, etc. - Y eso no es todo. Ningún otro marco conocido para mí ofrece un soporte tan amplio a la vez.
Algunos lo consideran un "menos", mientras que otros lo consideran un "más". Cada lado de la ley es diferente a su manera, y hasta cierto punto estoy de acuerdo con ambos.
Esto es un inconveniente, porque en tal situación el marco se convierte en un monolito.
Creo que si necesita estas características que conducen a la formación de un monolito, de una forma u otra tendrá que usar alguna otra biblioteca (o escribirla usted mismo).
¿Por qué, entonces, no usar una herramienta en la que todo esto ya está allí, probado en batallas, opera en los sitios más grandes, se desarrolla activamente y se brinda apoyo comunitario?
Si no necesita la mayoría de las funciones ofrecidas por Django, entonces es mejor quedarse con algo de microframework.
No reinventes la rueda, ¿te acuerdas? Dedique su tiempo a lo que es realmente importante y deje que Django haga el resto.
Administrador de Django
Aunque, mencioné este elemento en la sección anterior, merece mayor atención. En muchos marcos, en particular, Laravel, Yii, etc., se han hecho intentos para simplificar el trabajo con el panel de administración. He logrado desarrollar muchos proyectos en diferentes marcos, pero ninguno de ellos se puede comparar con Django en la conveniencia de trabajar con el panel de administración.
Algunos creen que Django Admin no es lo suficientemente flexible, y para ajustar cualquier parte a sus necesidades, debe hacer un gran esfuerzo. Al principio, trabajando con Django, me sentí inclinado a estar de acuerdo con esto, pero con el tiempo, al descubrir el marco, me convencí de esto. Sí, existe su propia curva de aprendizaje, pero no se desperdiciará ni un segundo que dedique a ella.
De hecho, Django Admin está muy bien estructurado. En algunos de mis proyectos, utilicé el panel de administración de Django "tal cual", y en otros lo reemplacé por completo con mis propias plantillas, que desarrollé desde cero. En cualquier caso, esto no llevó más tiempo que el desarrollo con cualquier otro marco que conociera.
¿La principal ventaja? Obtiene derechos de acceso y autenticación listos para usar. Llevaría semanas (o al menos unos días) desarrollar todo esto desde cero.
Principio SECO (no repetir)
Conozco muchos marcos cuyos proponentes afirman que realmente cumplen con el principio "SECO". He trabajado con muchos de estos marcos, pero en ninguno de ellos se implementa el principio de "DRY" como debería.
Desafortunadamente, en la mayoría de los marcos, el principio "SECO" simplemente no recibe suficiente atención. En mi opinión, si está escribiendo una aplicación que tiene la intención de actualizar regularmente (y esto se puede decir sobre la mayoría de las aplicaciones modernas), entonces debe seguir el principio DRY para evitar problemas.
Entonces, en Laravel, debe escribir la validación para cada procedimiento por separado. La situación es la misma con la mayoría de los otros marcos. Para que su código cumpla con el principio DRY, debe trabajar duro. Es difícil hacer un seguimiento, especialmente si trabajas en equipo.
A su vez, el marco Django está diseñado de tal manera que violar el principio DRY generalmente sale a propósito.
Eso no debería ser, ¿verdad? Considera un ejemplo.
Así es como Django funciona con la validación y migración de bases de datos
Cree la clase
Model
con los campos obligatorios. Indicamos todas las validaciones y restricciones adicionales que necesitamos.
Las migraciones son generadas por un solo comando CLI: `python manage.py makemigrations`.
Los cambios se realizan en la base de datos con un solo comando CLI: `python manage.py migrate`.
Las validaciones y restricciones se verifican automáticamente durante cada operación CRUD, ya sea un Django Admin o un Django REST Framework. No tiene que volver a escribir validaciones.
La misma clase de modelo se utiliza para generar vistas CRUD de Django Admin. No se requiere HTML / CSS personalizado.
Compare estas condiciones con cualquier otro marco, y creo que nunca podrá hacer algo así en las siguientes líneas de código:
class Employee(models.Model): name = models.CharField(max_length=127) email = models.EmailField(null=True, blank=True) created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True, auto_now=True)
No se trata solo de "no repetir". Este enfoque te salva de errores en el futuro. Todos nos encontramos en situaciones en las que cambiamos algo en un lugar y olvidamos reemplazarlo en otro lugar, y esto quedó claro solo después de que muchos usuarios comenzaron a tener problemas.
En Django, volviendo al código anterior, si alguna vez tiene que reemplazar el campo
`max_length`
con algo más, simplemente hágalo aquí. El cambio se aplicará automáticamente a la validación de todas las rutas y a la base de datos.
Mapeo relacional de objetos en Django
Django ofrece un motor ORM completo con todas las funciones.
Trabajé con muchas herramientas ORM en diversas tecnologías, incluidas Eloquent, greenDAO, Yii AR, etc. En todos ellos, las solicitudes más simples se manejan bastante bien, pero tarde o temprano tuve que escribir estas o aquellas solicitudes desde cero, ya que el mecanismo ORM no podía hacer frente a un caso práctico específico.
Con Django ORM, todavía no he estado en tales situaciones. Funcionó tan bien que tal vez olvides que estás trabajando con consultas de bases de datos. Esto es exactamente lo que debería ser el mapeo relacional de objetos. Los siguientes son algunos ejemplos de Django ORM:
# 5 , rank = 10 age <= 30 top_young_employees = Employee.objects.filter(rank=10, age__lte=30)[:5] # employee = Employee.objects.create(name='John Doe', age=35, country='IN') # print(employee.name)
Desarrollo rápido
A los creadores de casi cualquier marco web les encanta alardear de esto, y, tal vez, estén realmente bien, dependiendo del significado que le demos a la palabra "veloz".
Es cierto, con Django, algunas cosas se hacen hilarantemente rápido. Ya ha visto con qué facilidad pudimos determinar la interfaz de usuario del administrador, la tabla de la base de datos y validarla.
Era solo la punta del iceberg.
En principio, el desarrollo rápido no es una característica como tal, sino solo una consecuencia orgánica de Django DRY, ORM, el motor de plantillas y la filosofía de todo incluido.
Django Framework Security
Admitamos, a veces los desarrolladores son flojos. Estoy muy seguro De vez en cuando procrastino, posponiendo la solución para tareas críticas. Aquí es donde pueden surgir varias vulnerabilidades.
Me gusta especialmente el hecho de que Django no hace indulgencias de seguridad para acelerar el ritmo de desarrollo. Las funciones de seguridad están activadas de manera predeterminada, por lo que no importa si eres perezoso o no.
Código abierto, excelente documentación, gran comunidad, etc.
Dado que Django es un marco de código abierto y increíblemente popular, se ha formado una comunidad receptiva a su alrededor. Creo que conoce las ventajas del software libre y, por lo tanto, todas son inherentes a Django.
La documentación oficial de Django es más que suficiente para cualquier desarrollador. Si te quedas atascado, encontrar una solución no es difícil.
Es posible que ya tenga la impresión de que Django ha creado muchas de sus propias bibliotecas, por lo que puede sorprenderse de que no haya una biblioteca especial para probar aquí. No, no piense que el marco de trabajo de Django no es compatible con las pruebas, es compatible, incluso así. Es solo que siguiendo el principio de "No repetir", sería inútil desarrollar una biblioteca para probar cuando una excelente biblioteca de este tipo ya está en Python. Django interactúa bien con ella. Además, combina muy bien con bibliotecas de terceros, como pytest.
Estado actual de Django y otros marcos populares
Entonces, intenté en la mayor medida posible resaltar los problemas que encontré al trabajar con otros marcos y comparar estos marcos con Django. Después de trabajar con Yii, CodeIgniter, WordPress, CS-Cart, Laravel, etc., llegué a la conclusión de que Django es mucho mejor que cualquiera de ellos.
Sin embargo, esta es solo mi opinión.
Si le gustan las estadísticas, aquí está el estudio anual de desbordamiento de pila, donde Django se encuentra entre los marcos más populares y buscados:
Marcos, bibliotecas y herramientasMarcos, bibliotecas y herramientas más queridos, temidos y buscadosAdemás de la experiencia anterior con PHP, también desarrollé aplicaciones de Android en Java, aplicaciones de cliente en React.js. En todos estos casos, pasé una buena cantidad de tiempo refactorizando la base del código, buscando la mejor arquitectura, después de un par de meses vinculando problemas con la escalabilidad y nuevamente retomando la refactorización.
Recientemente reescribí de Laravel a Django una aplicación que tuve en producción durante más de un año. Logré implementar una nueva base de código en menos de 10 días, escribiendo la cantidad mínima de código para esto (digo lo mismo: ¡la complejidad disminuye!) En la dirección opuesta, tal operación definitivamente tomaría más de un mes.
Si intentas comparar directamente otros frameworks con Django, esto no te dará nada.
La supervisión del rendimiento puede mostrar que el marco de Java es más rápido que Django. Puede ser bueno en PHP, por lo que es posible que el desarrollo de su aplicación en Django sea más rápido que con el marco PHP familiar. En el caso de una aplicación muy simple, configurar Django puede parecerle un poco tedioso, por supuesto, es mucho más fácil escribir un archivo con scripts. Los resultados de la encuesta pueden variar según la audiencia a la que se realizaron.
Sin embargo, aquí no solo estamos discutiendo los marcos relacionados con otras tecnologías. Incluso si está familiarizado con Python, puede encontrar el microframework Flask más conveniente y deseable. Tendremos que pensar en cuál parar.
Mi consejo es simplemente no compararlos.
Conclusión
En mi opinión, Django logró equilibrar perfectamente el rendimiento, la arquitectura, la complejidad del desarrollo, la seguridad y la escalabilidad.
Si está comenzando a escribir un proyecto desde cero, le recomiendo que intente hacerlo con Django.