2008-09-24 13 views

Respuesta

6

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

  1. Los cambios en algunas de las cosas funky con modelos, tales como la sintaxis para las siguientes claves externas.

  2. Un pequeño conjunto de cambios en la plantilla, especialmente el escapado automático.

  3. Todo lo 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 algo como modificar dinámicamente las partes internas de Django para cambiar su comportamiento de una manera que sea necesaria/conveniente para su proyecto.

En resumen, a menos que usted está haciendo un montón de/cosas muy raro y o complejo, una simple actualización debe ser relativamente indoloro y sólo requieren algunos cambios.

+1

No olvide los cambios de administración y formularios. Esos son importantes. Admin no es dificil Las formas, sin embargo, pueden ser asesinas. –

3

Actualizar. Para mí fue muy simple: cambie __str__() a __unicode__(), escriba básico admin.py, y listo. Simplemente comience a ejecutar su aplicación en 1.0, pruébela y cuando encuentre un error, utilice la documentación en backwards-incompatible changes para ver cómo solucionar el problema.

2

Simplemente actualice su aplicación. El cambio de 0.96 a 1.0 fue enorme, pero en términos de cambios Incompatibles hacia atrás, dudo que tu aplicación tenga siquiera el 10% de ellos.

yo estaba en el tronco antes de Django 1.0 por lo que la transición para mí era el tiempo, pero incluso entonces las únicas cosas importantes que tenía que cambiar era newforms, newforms-admin, str() para Unicode() y maxlength a max_length

La mayoría de los otros cambios eran nuevas características o reescrituras de back-end o cosas que como alguien que estaba construyendo sitios web básicos ni siquiera se acercaban.

1

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

Espere un dolor real si su sitio es para no ASCII parte del mundo (léase: en cualquier lugar fuera de EE. UU. Y el Reino Unido). El cambio más doloroso en Django fue cambiar de cadenas de bytes a objetos unicode internamente - ahora tiene que encontrar todos los lugares donde use cadenas de bytes y cambiar esto a unicode. El peor caso es la representación de la plantilla, nunca sabrá que olvidó cambiar una variable hasta que obtenga UnicodeError.

Otros notables cosa: los manipuladores (oldforms) han ido y no tiene más remedio que volver a escribir todas las piezas con formas (newforms).

Si este es tu caso y tu proyecto es más grande que 2-3 aplicaciones, sería bastante reacio a actualizar hasta que sea realmente necesario.

1

Actualizamos en un proceso de varios pasos y estoy muy contento con eso. La aplicación en cuestión tenía alrededor de 100.000 LoC y ejecutaba varias funciones básicas del negocio con muchas interfaces con sistemas heredados.Trabajamos así:

  1. Actualiza a django 0.97-post unicode merge. Solucione todos los problemas Unicode
  2. refactorice la aplicación en aplicaciones reutilizables , agregue pruebas. Eso nos dejó con 40.000 LoC en la aplicación principal/Proyecto
  3. Actualiza a django 0.97-post autoexcape merge. Solucione el escapado automático en las aplicaciones reutilizables creadas en 3. Luego corrija los problemas restantes de escapes automáticos en la aplicación mian.
  4. Actualiza a 1.0. Lo que quedaba era principalmente arreglar las cosas de administración.

Todo el proceso duró aproximadamente 6 meses, cuando teníamos una rama de producción heredada en nuestros servidores mientras transferíamos otra rama a la 1.0. Al hacerlo, también agregamos características a la rama de producción.

La fusión final fue mucho menos desordenada de lo esperado y tomó aproximadamente una semana para que 4 codificadores se fusionen, revisen, prueben y arreglen. Luego lanzamos, y durante aproximadamente una semana fue mordido por errores previamente inesperados.

En general, estoy bastante satisfecho con el resultado. Ahora tenemos una base de código mucho mejor para un mayor desarrollo.

Cuestiones relacionadas