Saltar al contenido

Compatibilidad con Python en Django 4.2

    Django 4.2, la última versión de este popular framework web de Python, viene con emocionantes mejoras y compatibilidad con múltiples versiones de Python. Veamos qué novedades trae y cómo puedes aprovecharlas en tu proyecto.

    Compatibilidad con Versiones de Python

    Una de las primeras cosas que debes saber es que Django 4.2 es compatible con varias versiones de Python. Puedes utilizarlo con Python 3.8, 3.9, 3.10 y 3.11. Se recomienda encarecidamente que utilices la última versión de cada serie de Python para aprovechar al máximo las características y mejoras de Django.

    Novedades Destacadas en Django 4.2

    Django 4.2 presenta una serie de novedades interesantes que pueden facilitar tu desarrollo web. Aquí hay algunas de las más destacadas:

    1. Soporte para Psycopg 3

    Ahora, Django es compatible con Psycopg versión 3.1.8 o superior. Esto significa que puedes aprovechar las últimas características y mejoras de Psycopg al trabajar con bases de datos PostgreSQL en tu aplicación Django. No es necesario cambiar el motor de la base de datos, ya que django.db.backends.postgresql es compatible con ambas versiones.

    2. Comentarios en Columnas y Tablas de Base de Datos

    Una característica muy esperada es la capacidad de agregar comentarios a las columnas y tablas de tu base de datos. Esto es útil para documentar la estructura de la base de datos y proporcionar contexto sobre los datos almacenados. Aquí tienes un ejemplo de cómo hacerlo en tu modelo:

    from django.db import models
    
    class Question(models.Model):
        text = models.TextField(db_comment="Pregunta de la encuesta")
        pub_date = models.DateTimeField(
            db_comment="Fecha y hora en que se publicó la pregunta",
        )
    
        class Meta:
            db_table_comment = "Preguntas de la encuesta"
    

    3. Almacenamiento en Memoria para Pruebas

    Si deseas acelerar tus pruebas evitando el acceso al disco, Django 4.2 introduce la clase InMemoryStorage en django.core.files.storage. Puedes usarla como sistema de almacenamiento no persistente para pruebas, lo que puede mejorar significativamente la velocidad de tus pruebas unitarias.

    4. Configuración de Múltiples Sistemas de Almacenamiento de Archivos Personalizados

    Una característica poderosa es la capacidad de configurar múltiples sistemas de almacenamiento de archivos personalizados. Esto te permite definir dónde y cómo se almacenan diferentes tipos de archivos, como archivos de medios y archivos estáticos. Aquí tienes un ejemplo de cómo configurarlo en tu archivo settings.py:

    # settings.py
    
    STORAGES = {
        "default": {
            "BACKEND": "django.core.files.storage.FileSystemStorage",
            "OPTIONS": {},
        },
        "staticfiles": {
            "BACKEND": "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
            "OPTIONS": {},
        },
        # Agrega más sistemas de almacenamiento según sea necesario
    }

    Y luego, en tu modelo, puedes especificar el sistema de almacenamiento para un campo de archivo específico:

    # Mi models.py
    
    class MiModelo(models.Model):
        archivo = models.FileField(upload_to="archivos/", storage=STORAGES["default"])

    Esta flexibilidad te permite administrar tus archivos de manera eficiente según tus necesidades.

    Cambios Incompatibles

    Es importante tener en cuenta que en Django 4.2, se han realizado algunos cambios incompatibles:

    • El soporte para MariaDB 10.3 y MySQL 5.7 se ha eliminado, por lo que se recomienda actualizar a versiones más recientes de estos sistemas de gestión de bases de datos.
    • La opción index_together en las opciones de modelo se ha deprecado en favor de indexes, lo que proporciona una sintaxis más clara y versátil para definir índices en tu modelo.
    • Se advierte sobre el uso de literales JSON codificados en campos JSONField. En su lugar, se recomienda utilizar objetos Python nativos para representar datos JSON, lo que mejora la seguridad y la claridad del código.

    Depreciaciones

    Además de los cambios incompatibles mencionados, se han deprecado varias características en Django 4.2:

    • Los hashers de contraseñas SHA1 y MD5 se consideran obsoletos y se recomienda migrar a algoritmos de hash más seguros.

    Deja una respuesta