
Django 5.2.3
Abbiamo già parlato in un altro articolo di Django 5.2 e di cosa sono i framework Python. Precisiamo che questo articolo Django 5.2.3 si rivolge a sviluppatori Pyrthon.
Data di rilascio e ciclo di vita Django 5.2.3
- Django 5.2.3 è stato ufficialmente pubblicato il 10 giugno 2025, come bugfix release per il ramo 5.2, per completare la mitigazione della vulnerabilità CVE‑2025‑48432 e correggere alcune regressioni introdotte in 5.2.2.
- Django 5.2.4 è previsto per il 2 luglio 2025, e includerà ulteriori correzioni di bug emersi dopo il rilascio di 5.2.3.
- Il ramo 5.2 è un LTS (Long‑Term Support), con fine supporto mainstream a dicembre 2025 e fine supporto esteso ad aprile 2028.
- In base alla roadmap ufficiale, Django 6.0 è pianificato per dicembre 2025, seguito da Django 6.1 (agosto 2026), 6.2 LTS (aprile 2027) e 7.0 (dicembre 2027).
1. Panoramica delle novità in Django 5.2
Rilasciato il 2 aprile 2025, Django 5.2 introduce diverse feature e miglioramenti di basso livello:
- Compatibilità Python
Supporto ufficiale per Python 3.10, 3.11, 3.12 e 3.13. Si raccomanda di usare sempre la versione più aggiornata di ogni serie. - Import automatico dei modelli nella shell
manage.py shell
importa automaticamente i modelli di tutte le app installate.
$ python -m django shell --verbosity=2
6 oggetti importati automaticamente, inclusi:
from django.contrib.auth.models import User, Group, Permission
- CompositePrimaryKey
Nuova classedjango.db.models.CompositePrimaryKey
per chiave primaria composta:
from django.db import models
class Release(models.Model):
pk = models.CompositePrimaryKey("version", "name")
version = models.IntegerField()
name = models.CharField(max_length=20)
- Override semplificato di BoundField
Si può specificarebound_field_class
a livello di progetto, form o singolo campo, senza ridefinireField.get_bound_field()
. - Nuove API per Request/Response
HttpResponse.text
restituisce la rappresentazione testuale dicontent
.HttpRequest.get_preferred_type()
individua il media type preferito dal client.- Il parametro
preserve_request
inHttpResponseRedirect
,redirect()
e simili per mantenere metodo e body nei redirect.
- Miglioramenti alle migration
AlterConstraint
esegue alter senza droppare e ricreare constraint.Expression.set_returning
eallows_composite_expressions
per funzioni set‑returning e composite PK.
- Testing
- Stack frame interni nascosti nei messaggi di errore, migliorando la leggibilità.
--pdb
entra direttamente nel test fallito.- Fixture con
serialized_rollback=True
disponibili inTransactionTestCase.setUpClass()
.
2. Bugfix e cambiamenti di basso livello in 5.2.3
Il rilascio di Django 5.2.3 si focalizza su:
- Mitigazione log injection
Passaggio di tutte le operazioni di logging di risposta adjango.utils.log.log_response()
, che esegue escaping sicuro degli argomenti (CVE‑2025‑48432). - Regressione in
QuerySet.bulk_update()
Corretto il comportamento che convertivaNone
in JSONnull
anziché SQLNULL
per campiJSONField
. - Regressione in MediaType.params
Ripristinato il parametroq
rimosso accidentalmente dalla proprietà internadjango.http.MediaType.params
.
3. Punti salienti di 5.2.4 e roadmap verso 6.0
Django 5.2.4 (previsto 2 luglio 2025) si concentra su:
- Correzione di
HttpRequest.get_preferred_type()
che preferiva media type più specifici con qualità inferiore. - Messa a punto della serializzazione di
Value(None, JSONField())
neiWhen
.
Roadmap future
Release Series | Release Date | End mainstream | End extended |
---|---|---|---|
6.0 | December 2025 | August 2026 | April 2027 |
6.1 | August 2026 | April 2027 | December 2027 |
6.2 (LTS) | April 2027 | December 2027 | April 2030 |
7.0 | December 2027 | August 2028 | April 2029 |
4. Criticità e casi pratici Django 5.2.3
- Caracter set MySQL cambiato
- In Django 5.2 la connessione MySQL di default usa
utf8mb4
(invece diutf8mb3
). - Impatto: tabelle legacy potrebbero non essere compatibili.
- Soluzione: specificare
OPTIONS: {'charset': 'utf8mb3'}
inDATABASES
.
- In Django 5.2 la connessione MySQL di default usa
- CompositePrimaryKey e migrazioni
- I migration tool devono riconoscere chiavi composte: attenzione a custom migration operations.
- Esempio pratico: aggiungere un campo a modello con chiave composta richiede
AlterField
eAlterConstraint
.
- Cambio di default in Oracle e PostgreSQL
- SQLite ora supporta VARCHAR illimitati:
max_length
non più obbligatorio. - PostgreSQL 14+ consente
memory
eserialize
inQuerySet.explain()
.
- SQLite ora supporta VARCHAR illimitati:
5. Testing e strumenti di supporto
TestCase
eTransactionTestCase
- Con 5.2 stack interni nascosti e
--pdb
. - Fixture con rollback serializzato disponibili in
setUpClass()
.
- Con 5.2 stack interni nascosti e
- CI/CD
- Aggiornare pipeline per testare su Python 3.13.
- Integrare linting con
flake8-django
eisort
. - Assicurarsi che i test di integrazione con DB (PostgreSQL/MySQL) coprano le nuove opzioni di
explain()
.
- Dipendenze
- Verificare compatibilità di librerie popolari (DRF, Celery, Channels) con Django 5.2.x.
6. Consigli per una migrazione efficace Django 5.2.3
- Strategia “per passi”
- Passare prima a Django 5.2.0, poi applicare progressivamente i patch 5.2.x.
- Usare feature flags (ad es.
DJANGO_PRESERVE_REQUEST
) per testare redirect “preserving”.
- Organizzazione del progetto
- Separare le app core da quelle di terze parti.
- Centralizzare i settings di compatibilità (es.
DATABASES
,LANGUAGE_CODE
).
- Automatizzare la transizione
- Script SQL per verificare charset e collation nei DB.
- Test di regressione custom per JSONField e redirect.
- Documentazione interna
- Aggiornare il README con le versioni supportate e i comandi di upgrade.
- Aggiungere note sulle nuove API (
HttpResponse.text
,CompositePrimaryKey
).
(fonte) (fonte) (fonte) (fonte)
Innovaformazione, scuola informatica specialistica promuove la cultura dello sviluppo software consapevole ed accompagna le aziende nella formazione continua dei team di sviluppatori. Nell’offerta formativa trovate il Corso Django framework rivolto solo alle aziende.
Per leggere invece altri articoli tecnici di settore consigliamo di navigare sul nostro blog QUI.
INFO: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati

Arriva Java 25

Cosa è Salesforce Marketing Cloud

Cosa è SAP S/4 HANA e differenze con SAP ECC

Visual Studio 2026

Albania AI diventa Ministro
