Pregunta

¿Debo intentar actualizar realmente mi aplicación existente o simplemente reescribirla desde cero, guardando qué partes (plantillas, etc.) puedo?

¿Fue útil?

Solución

Aunque esto depende de lo que estés haciendo, la mayoría de las aplicaciones deberían poder actualizar y corregir todo lo que se rompe. En mi experiencia, las principales cosas que he tenido que arreglar después de una actualización son

  1. Cambia a algunas de las cosas funky con los modelos, como la sintaxis de las siguientes claves externas.

  2. Un pequeño conjunto de cambios de plantilla, especialmente los de escape automático.

  3. Cualquier cosa que dependa de la estructura específica de las partes internas de Django. Esto no debería ser un problema a menos que esté haciendo cosas como la modificación dinámica interna de Django para cambiar su comportamiento de una manera que sea necesaria / conveniente para su proyecto.

Para resumir, a menos que estés haciendo un montón de cosas realmente extrañas y / o complejas, una simple actualización debería ser relativamente sencilla y solo requerir algunos cambios.

Otros consejos

Actualizar. Para mí fue muy simple: cambiar __str __ () a __unicode __ () , escribir admin.py básico, y listo. Simplemente comience a ejecutar su aplicación en la versión 1.0, pruébela y, cuando encuentre un error, use la documentación en anterior-incompatible cambia para ver cómo solucionar el problema.

Simplemente actualiza tu aplicación. El cambio de 0.96 a 1.0 fue enorme, pero en términos de cambios incompatibles con versiones anteriores, dudo que su aplicación tenga el 10% de ellos.

Estaba en el troncal antes de Django 1.0, así que la transición para mí fue con el tiempo, pero incluso entonces las únicas cosas importantes que tuve que cambiar fueron las nuevas formas, newforms-admin, str () a Unicode () y maxlength to max_length

La mayoría de los otros cambios fueron características nuevas o reescrituras backend o cosas que, como alguien que estaba construyendo sitios web básicos, ni siquiera se acercaron.

Solo los sitios más simples son fáciles de actualizar.

Espere un verdadero dolor si su sitio es parte de non-ASCII del mundo (lea: en cualquier lugar fuera de EE. UU. y Reino Unido). El cambio más doloroso en Django fue el cambio interno de los bytestrings a los objetos Unicode. Ahora tiene que encontrar todos los lugares donde se usan los bytestrings y cambiarlos a Unicode. El peor de los casos es la representación de la plantilla, nunca sabrás que olvidaste cambiar una variable hasta que obtengas UnicodeError.

Otra cosa notable: los manipuladores ( oldforms ) se han ido y usted no tiene otra manera que reescribir todas las partes con formularios ( newforms ).

Si este es tu caso y tu proyecto tiene más de 2-3 aplicaciones, me resistiría a actualizarlo hasta que sea realmente necesario.

Hemos actualizado en un proceso de varios pasos y estoy muy contento con eso. La aplicación en cuestión tenía aproximadamente 100.000 LoC y ejecutaba varias funciones empresariales básicas con una gran cantidad de interfaces con sistemas heredados. Trabajamos así:

  1. Actualización a Django 0.97-post Unicode unir. Solucionar todos los problemas de Unicode
  2. refactoriza la aplicación en Aplicaciones reutilizables, añadir pruebas. Eso nos dejó con 40.000 LoC en la aplicación principal / Proyecto
  3. Actualiza a django 0.97-post autoexcape merge. Repare el escape automático en las aplicaciones reutilizables creadas en 3. Luego, solucione los problemas de escape automático restantes en la aplicación mian.
  4. Actualiza a 1.0. Lo que quedaba era en su mayoría arreglar las cosas de administrador.

Todo el proceso tomó cerca de 6 meses en los que ejecutamos una sucursal de producción heredada en nuestros servidores al tiempo que portamos otra sucursal a 1.0. Al hacerlo, también agregamos funciones a la rama de producción.

La combinación final fue mucho menos complicada de lo esperado y tomó aproximadamente una semana para 4 codificadores que se fusionaron, revisaron, probaron y repararon. Luego nos lanzamos y durante aproximadamente una semana nos picaron algunos errores inesperados.

En general estoy bastante satisfecho con el resultado. Tenemos un código base mucho mejor ahora para un mayor desarrollo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top