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 shellimporta 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.CompositePrimaryKeyper 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_classa livello di progetto, form o singolo campo, senza ridefinireField.get_bound_field(). - Nuove API per Request/Response
HttpResponse.textrestituisce la rappresentazione testuale dicontent.HttpRequest.get_preferred_type()individua il media type preferito dal client.- Il parametro
preserve_requestinHttpResponseRedirect,redirect()e simili per mantenere metodo e body nei redirect.
- Miglioramenti alle migration
AlterConstraintesegue alter senza droppare e ricreare constraint.Expression.set_returningeallows_composite_expressionsper funzioni set‑returning e composite PK.
- Testing
- Stack frame interni nascosti nei messaggi di errore, migliorando la leggibilità.
--pdbentra direttamente nel test fallito.- Fixture con
serialized_rollback=Truedisponibili 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 convertivaNonein JSONnullanziché SQLNULLper campiJSONField. - Regressione in MediaType.params
Ripristinato il parametroqrimosso 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
AlterFieldeAlterConstraint.
- Cambio di default in Oracle e PostgreSQL
- SQLite ora supporta VARCHAR illimitati:
max_lengthnon più obbligatorio. - PostgreSQL 14+ consente
memoryeserializeinQuerySet.explain().
- SQLite ora supporta VARCHAR illimitati:
5. Testing e strumenti di supporto
TestCaseeTransactionTestCase- 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-djangoeisort. - 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
Guida TailwindSQL
SAP incassi e riconciliazioni bancarie
Novità di Windows Forms
CancellationToken in .NET
Spieghiamo Graph Neural Networks GNNs
