Las Novedades Que Trae Django 5 – Parte 1

7 minuto(s)

Apenas algunos desarrolladores están aprendiendo Django 4 y ya ha sido lanzada una nueva versión de Django en Diciembre de 2023. Django 5.0 será compatible con Python 3.10, 3.11 y 3.12 y otras nuevas versiones que sean lanzadas, también habran características que serán eliminadas porque han llegado al final de su ciclo de obsolescencia. En este post te compartiré Las Novedades Que Trae Django 5, vamos con ello.

Partes

Compilando una aplicación
Antes de compilar una aplicación debes de tener encuenta haber solucionado todos los errores posibles en ella

Antes de continuar te invito a leer los siguientes artículos:

Asimismo, te invito a escuchar el Podcast: “Razones Por Las Cuales Te Cuesta Aprender A Programar” “¿ Qué Es NoCode Development ?” (Anchor Podcast): 

Spotify: Sound Cloud: Apple Podcasts Anchor Podcasts

Bien ahora continuemos con el Post: Las Novedades Que Trae Django 5 – Parte 1.

Las Novedades Que Trae Django 5

Es importante mencionar que la serie Django 4.2.x es la última en admitir Python 3.8 y 3.9. Veamos a continuación las novedades que nos traerá Django 5:

Filtros de facetas en el administrador

Los recuentos de facetas ahora se muestran para los filtros aplicados en la lista de cambios del administrador cuando se activa a través de la interfaz de usuario. Este comportamiento se puede cambiar a través del nuevo atributo ModelAdmin.show_facets

Por ejemplo, para mostrar siempre los recuentos de facetas sin necesidad de proporcionar el parámetro de consulta, puedes establecer admin.ShowFacets.ALWAYS en una variable llamada show_facets (puedes ponerle otro nombre que desees a la variable):

Plantillas simplificadas de campos de formulario

En Django 5 se agregará el concepto de grupos de campos y plantillas, para simplificar la carga de elementos de un formuario, como el label_tag, helptext y errors.

Por ejemplo el siguiente formulario:


Ahora se puede simplificar a:


El método as_field_group() renderiza los campos con la plantilla “django/forms/field.html” de forma predeterminada y puede ser personalizada para cada proyecto, por campo o solicitud.

Valores predeterminados calculados por la base de datos

El nuevo parámetro Field.db_default establece un valor por defecto que es calculado por la base de datos. Por ejemplo tenemos el siguiente modelo para una tabla productos:


Puedes ver que dentro de cada campo le estamos colocando luego del tipo de dato, entre paréntesis el parámetro db_default con un determinado valor o cálculo que puede retornar un valor y se inserta en la columna de la base de datos.

Por ejemplo el campo circunferencia que es la circunferencia de un producto, en el parámetro db_default se hace el cálculo de 2 * Pi() el cual puede devolver un valor aproximado de 6.28318530718, este valor se inserta en la columna circunferencia de la tabla productos.

Características menores

Veamos algunas características más pequeñas que traerá Django 5:

django.contrib.admin

Esta interface recibirá las siguientes actualizaciones:

  • El nuevo método AdminSite.get_log_entries() permite personalizar el conjunto de consultas para los logs o registros del sitio.
  • XRegExp que permite ejecutar expresiones regulares, se actualiza de la versión 3.2.0 a la 5.1.1.
  • Los filtros admin:  django.contrib.admin.AllValuesFieldListFilter, ChoicesFieldListFilter, RelatedFieldListFilter y RelatedOnlyFieldListFilter  ahora manejan parámetros de consulta de varios valores.
  • El nuevo método AdminSite.get_model_admin() devuelve una clase de administrador para la clase de modelo dada.

django.contrib.auth

El sistema de autenticación de Django recibirá las siguientes actualizaciones:

django.contrib.gis

Este módulo que cuenta con varias utilidades para crear aplicaciones web geospaciales recibirá las siguientes actualizaciones:

  • Se agregó una nueva función llamada ClosestPoint() que devuelve un punto bidimensional en la geometría que está más cerca de otra geometría.
  • Los agregados GIS ahora respaldan el argumento filter.
  • Se agregó soporte para GDAL 3.7 (GDAL son las iniciales de Geospatial Data Abstraction Library).
  • Se agregó soporte para GEOS 3.12 (GEOS son las iniciales de Geometry Engine – Open Source).

django.contrib.postgres

Este módulo que contiene modelos y campos para tipos de datos en PostgreSQL, contará con el nuevo atributo violation_error_code perteneciente a ExclusionConstraint. Este atributo permitirá personalizar el código o code de un error de Validación o ValidationError obtenido al validar un modelo.

Vistas asíncronas

Ahora los eventos http.disconnect se manejan mediante ASGI (Asynchronous Server Gateway Interface). Esto permite que las vistas lleven a cabo cualquier limpieza que sea necesaria si un cliente como un navegador web se desconecta antes de que genere la respuesta.

Decoradores

Estos decoradores ahora admiten funciones de vista asíncrona envolvente:

Puedes presionar sobre los 15 primeros decoradores para concer más sobre ellos. Los 3 últimos están en proceso de creación.

Informe de errores

Los decoradores sensitive_variables() y sensitive_post_parameters() ahora pueden ser usados con funciones asíncronas.

Formularios

Las siguientes características se agregarán a los formularios:

  • Ahora el argumento ChoiceField.choices ahora acepta directamente clases Choices en lugar de requerir expansión con el atributo choices.
  • Ahora el nuevo argumento assume_scheme para los campos URLField permite establecer un esquema de URL predeterminado.
  • Con el fin de mejorar la accesibilidad y permitir que los lectores de pantalla asocien campos de formulario con su texto de ayuda, el campo de formulario ahora incluye el atributo HTML aria-describedby.
  • Con la finalidad de mejorar la accesibilidad para los usuarios, el campo de un formulario que sea no válido, ahora incluye el atributo HTML aria-invalid=”true”.

Modelos

Se agregaron las siguientes características a los modelos:

Paginación

El nuevo argumento django.core.paginator.Paginator.error_messages permite personalizar los mensajes de error generados por el método Paginator.page().

Signals (Señales)

Los nuevos métodos Signal.asend() y Signal.asend_robust() permiten el envío de señales asíncronas. Los receptores de señal pueden ser síncronos o asíncronos y se adaptarán automáticamente al estilo de llamada correcto.

Templates (Plantillas)

Las clases Client y AsyncClient ahora proporciona métodos asincrónicos, usando un prefijo a: asession(), alogin(), aforce_login() y alogout().

Validators (Validadores)

El nuevo argumento argumento de la clase StepValueValidator permite especificar un desplazamiento para valores válidos.

Bien hasta aquí llegamos con esta primera Parte en donde hemos visto varias características nuevas que vendrán con Django 5.

Ten Paciencia, lo que quiero es que conozcas bien estas nuevas características de Django 5 y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.

Nota (s)

  • En la siguiente parte continuaremos viendo nuevas características que traerá Django Framework 5.
  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.