Si bien a veces puede ser un proceso complejo, actualizar a la última versión de Django tiene varios beneficios:

  • Se agregan nuevas funciones y mejoras.
  • Se corrigen los errores.
  • La versión anterior de Django eventualmente ya no recibirá actualizaciones de seguridad. (ver Versiones admitidas).
  • La actualización a medida que está disponible cada nueva versión de Django hace que las actualizaciones futuras sean menos dolorosas al mantener su base de código actualizada.

A continuación, se incluyen algunas cosas que debe considerar para ayudar a que su proceso de actualización sea lo más fluido posible.

Lectura obligatoria

Si es la primera vez que realiza una actualización, es útil leer el guía sobre los diferentes procesos de liberación.

Luego, debe familiarizarse con los cambios que se realizaron en las nuevas versiones de Django:

  • Leer el Notas de lanzamiento para cada lanzamiento ‘final’ desde el posterior a su versión actual de Django, hasta e incluyendo la versión a la que planea actualizar.
  • Mira el cronograma de desaprobación para las versiones relevantes.

Preste especial atención a los cambios incompatibles con versiones anteriores para tener una idea clara de lo que se necesitará para una actualización exitosa.

Si está actualizando a través de más de una versión de función (por ejemplo, 2.0 a 2.2), generalmente es más fácil actualizar a través de cada versión de función de forma incremental (2.0 a 2.1 a 2.2) en lugar de realizar todos los cambios para cada versión de función a la vez. Para cada versión de función, use la última versión de parche (por ejemplo, para 2.1, use 2.1.15).

Se recomienda el mismo enfoque de actualización incremental al actualizar de un LTS al siguiente.

Dependencias

En la mayoría de los casos, también será necesario actualizar a la última versión de sus dependencias relacionadas con Django. Si la versión de Django se lanzó recientemente o si algunas de sus dependencias no están bien mantenidas, es posible que algunas de sus dependencias aún no sean compatibles con la nueva versión de Django. En estos casos, es posible que deba esperar hasta que se publiquen nuevas versiones de sus dependencias.

Resolución de advertencias de obsolescencia

Antes de actualizar, es una buena idea resolver cualquier advertencia de obsolescencia generada por su proyecto mientras usa su versión actual de Django. Corregir estas advertencias antes de la actualización garantiza que esté informado sobre las áreas del código que deben modificarse.

En Python, las advertencias de obsolescencia se silencian de forma predeterminada. Debes encenderlos usando el -Wa Opción de línea de comandos de Python o la PYTHONWARNINGS Variable ambiental. Por ejemplo, para mostrar advertencias mientras se realizan pruebas:

$ python -Wa manage.py test
...> py -Wa manage.py test

Si no está utilizando el ejecutor de pruebas de Django, es posible que también deba asegurarse de que no se capture ningún resultado de la consola, lo que ocultaría las advertencias de obsolescencia. Por ejemplo, si usa pytest:

$ PYTHONWARNINGS=always pytest tests --capture=no

Resuelva cualquier advertencia de obsolescencia con su versión actual de Django antes de continuar con el proceso de actualización.

Las aplicaciones de terceros pueden usar API obsoletas para admitir varias versiones de Django, por lo que las advertencias de obsolescencia en los paquetes que ha instalado no necesariamente indican un problema. Si un paquete no es compatible con la última versión de Django, considere plantear un problema o enviar una solicitud de extracción.

Instalación

Una vez que esté listo, es hora de instalar la nueva versión de Django. Si está utilizando un virtual environment y es una actualización importante, es posible que desee configurar un nuevo entorno con todas las dependencias primero.

Si instaló Django con pepita, puedes usar el --upgrade o -U bandera:

$ python -m pip install -U Django
...> py -m pip install -U Django

Pruebas

Cuando se configura el nuevo entorno, ejecutar el conjunto de pruebas completo para su aplicación. Nuevamente, es útil activar las advertencias de obsolescencia para que se muestren en el resultado de la prueba (también puede usar la marca si prueba su aplicación manualmente usando manage.py runserver):

$ python -Wa manage.py test
...> py -Wa manage.py test

Una vez que haya ejecutado las pruebas, corrija las fallas. Si bien tiene las notas de la versión frescas en su mente, también puede ser un buen momento para aprovechar las nuevas características de Django refactorizando su código para eliminar las advertencias de obsolescencia.

Despliegue

Cuando esté lo suficientemente seguro de que su aplicación funciona con la nueva versión de Django, estará listo para continuar y desplegar su proyecto actualizado de Django.

Si está utilizando el almacenamiento en caché proporcionado por Django, debería considerar borrar su caché después de la actualización. De lo contrario, puede tener problemas, por ejemplo, si está almacenando en caché objetos en escabeche, ya que no se garantiza que estos objetos sean compatibles con pepinillos en las versiones de Django. Una instancia anterior de incompatibilidad fue el almacenamiento en caché en escabeche HttpResponse objetos, ya sea directa o indirectamente a través de la cache_page() decorador.