{"title":"Come aggiornare Django ad una nuova versione","version":"5.2","locale":"it","docname":"howto/upgrade-version","url":"/it/5.2/howto/upgrade-version/","canonical":"https://djangodocs.dev/it/5.2/howto/upgrade-version/","summary":"Mentre può essere a volte un processo complesso, aggiornare all’ultima versione di Django ha alcuni benefici: Nuove features e miglioramenti sono aggiunti Bugs e…","html":"<h1>Come aggiornare Django ad una nuova versione<a class=\"heading-anchor\" href=\"#how-to-upgrade-django-to-a-newer-version\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Mentre può essere a volte un processo complesso, aggiornare all’ultima versione di Django ha alcuni benefici:</p>\n<ul class=\"simple\">\n<li><p>Nuove features e miglioramenti sono aggiunti</p></li>\n<li><p>Bugs e fix.</p></li>\n<li><p>La versione precedente di Django potrebbe non ricevere più aggiornamenti di sicurezza. (vedi <a class=\"reference internal\" href=\"/it/5.2/internals/release-process/#supported-versions-policy\"><span class=\"std std-ref\">Supported versions</span></a>).</p></li>\n<li><p>Aggiornando ogni qualvolta un nuovo rilascio di Django è disponibile rende i futuri aggiornamenti meno doloroso mantenendo aggiornato il tuo codice.</p></li>\n</ul>\n<aside class=\"admonition-tools-to-help-with-version-upgrades admonition\">\n<p class=\"admonition-title\">Tools to help with version upgrades</p>\n<p>Django has a vibrant ecosystem. There are automated upgrade helpers\nhighlighted on the <a class=\"reference external\" href=\"https://www.djangoproject.com/community/ecosystem/#upgrade-utilities\">Community Ecosystem</a>\npage.</p>\n</aside>\n<p>Qui ci sono alcune cose da considera per aiutarti a completare il processo di upgrade nel modo più facile possibile.</p>\n<section id=\"required-reading\">\n<h2>Letture richieste<a class=\"heading-anchor\" href=\"#required-reading\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Se è la prima volta che fai un aggiornamento, è utile leggere la <a class=\"reference internal\" href=\"/it/5.2/internals/release-process/\"><span class=\"doc\">guida sui diversi processi di rilascio</span></a>.</p>\n<p>Successivamente, dovresti familiarizzare con le modifiche apportate alla/e nuova/e versione/i di Django:</p>\n<ul class=\"simple\">\n<li><p>Leggi le <a class=\"reference internal\" href=\"/it/5.2/releases/\"><span class=\"doc\">note di rilascio</span></a> per ogni rilascio “final” da quella corrente di Django, fino ad includere la versione alla quale pianifichi di fare l’upgrade.</p></li>\n<li><p>Guarda la <a class=\"reference internal\" href=\"/it/5.2/internals/deprecation/\"><span class=\"doc\">deprecation timeline</span></a> per le versioni più rilevanti.</p></li>\n</ul>\n<p>Presta particolare attenzione ai cambiamenti che introducono incompatibilità all’indietro per avere un’idea chiara di cosa sarà necessario per un aggiornamento di successo.</p>\n<p>Se stai aggiornando tra più di una versione (per es. da 2.0 a 2.2), generalmente è più facile fare upgrade incrementalmente di release in release (dalla 2.0 alla 2.1, alla 2.2…) piuttosto che fare tutti i cambiamenti per ogni release assieme. Per ogni release futura, usa l’ultima patch di rilascio (per es. per 2.1, usa 2.1.15).</p>\n<p>Lo stesso approccio di aggiornamenti incrementali è raccomandato quando si aggiorna da una LTS alla successiva.</p>\n</section>\n<section id=\"dependencies\">\n<h2>Dipendenze<a class=\"heading-anchor\" href=\"#dependencies\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Il molti casi sarà necessario aggiornare all’ultima versione delle tue dipendenze collegate a Django. Se la versione di Django è stata rilasciata recentemente o alcune delle tue dipendenze non sono ben manutenute, alcune delle tue dipendenze potrebbero non supportarla. In questi casi devi aspettare che siano rilasciate nuove versioni delle tue dipendenze.</p>\n</section>\n<section id=\"resolving-deprecation-warnings\">\n<h2>Risolvere i warning delle deprecation<a class=\"heading-anchor\" href=\"#resolving-deprecation-warnings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Prima dell’upgrade, è una buona idea risolvere ogni segnalazione di errore per parti deprecate nel tuo progetto mentre stai utilizzando la versione corrente di Django Sistemare questi errori prima dell’aggiornamento ti assicura la conoscenza delle aree del codice che hanno bisogno di essere modificate.</p>\n<p>In Python, i warning di deprecazione sono silenziati di default. Devi abilitarli con l’opzione <code class=\"docutils literal notranslate\"><span class=\"pre\">-Wa</span></code> in command line o la variabile d’ambiente <span class=\"target\" id=\"index-2\"></span><a class=\"reference external\" href=\"https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS\" title=\"(in Python v3.14)\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">PYTHONWARNINGS</span></code></a>. Per esempio, per mostrare i warning mentre si lanciano i test:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-Wa<span class=\"w\"> </span>manage.py<span class=\"w\"> </span><span class=\"nb\">test</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -Wa manage.py test\n</code></pre></div></div></div>\n<p>Se non stai usando il test runner di Django, potresti aver bisogno di assicurare che l’output della console non sia catturato per evitare di nascondere i warning di deprecazione. Per esempio, se usi <a class=\"reference external\" href=\"https://docs.pytest.org/\">pytest</a>:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nv\">PYTHONWARNINGS</span><span class=\"o\">=</span>always<span class=\"w\"> </span>pytest<span class=\"w\"> </span>tests<span class=\"w\"> </span>--capture<span class=\"o\">=</span>no\n</code></pre></div>\n<p>Risolvi eventuali avvisi di deprecazione con la versione corrente di Django prima di continuare il processo di aggiornamento.</p>\n<p>Applicazioni di terze parti potrebbero usare APi deprecate per supportare più versioni di Django, quindi i warning di deprecazione in package che hai installato non indicano necessariamente un problema. Se un package non supporta l’ultima versione di Django, considera di sollevare una issue o di mandare una pull request.</p>\n</section>\n<section id=\"installation\">\n<h2>Installazione<a class=\"heading-anchor\" href=\"#installation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Una volta che sei pronto, è tempo di <a class=\"reference internal\" href=\"/it/5.2/topics/install/\"><span class=\"doc\">installare la nuova versione di Django</span></a>. Se stai usando un  <a class=\"reference external\" href=\"https://docs.python.org/3/library/venv.html#module-venv\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">virtual</span> <span class=\"pre\">environment</span></code></a> ed è un aggiornamento major, potresti volere prima approntare un nuovo ambiente con tutte le dipendenze.</p>\n<p>Se hai installato Django con <a class=\"reference external\" href=\"https://pip.pypa.io/\">pip</a>, puoi usare il flag <code class=\"docutils literal notranslate\"><span class=\"pre\">--upgrade</span></code> o <code class=\"docutils literal notranslate\"><span class=\"pre\">-U</span></code>:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>-U<span class=\"w\"> </span>Django\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m pip install -U Django\n</code></pre></div></div></div>\n</section>\n<section id=\"testing\">\n<h2>Testing<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Quando il nuovo ambiente è pronto,  <a class=\"reference internal\" href=\"/it/5.2/topics/testing/overview/\"><span class=\"doc\">lancia l’intera suite di test</span></a> per la tua applicazione. Di nuovo, è utile abilitare i warning di deprecazione così che siano mostrati negli output dei test (puoi anche usare il flag se testi la tua app manualmente con <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">runserver</span></code>):</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-2-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-Wa<span class=\"w\"> </span>manage.py<span class=\"w\"> </span><span class=\"nb\">test</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-2-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -Wa manage.py test\n</code></pre></div></div></div>\n<p>Dopo aver lanciato i test, fai le correzioni. Mentre hai le note di rilascio fresche nella mente, può essere un buon momento per avvantaggiarsi delle nuove feature in Django rifattorizzando il codice per eliminare ogni warning di deprecazione.</p>\n</section>\n<section id=\"deployment\">\n<h2>Deployment<a class=\"heading-anchor\" href=\"#deployment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Quando sei sufficientemente sicuro che la tua app funzioni con la nuova versione di Django, sei pronto per andare avanti e <a class=\"reference internal\" href=\"/it/5.2/howto/deployment/\"><span class=\"doc\">deploy</span></a> il tuo progetto Django aggiornato.</p>\n<p>Se stai utilizzando il caching offerto da Django, dovresti considerare di pulire la cache dopo l’upgrade. Altrimenti potresti incappare in probblemi, per esempio, se stai mettendo in cache oggetti pickled perchè questi oggetti non sono garantiti essere pickle-compatibili tra versioni di Django. Un caso passato di incompatibilità era la memorizzazione nella cache degli oggetti <a class=\"reference internal\" href=\"/it/5.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>, sia direttamente che indirettamente tramite il decoratore <a class=\"reference internal\" href=\"/it/5.2/topics/cache/#django.views.decorators.cache.cache_page\" title=\"django.views.decorators.cache.cache_page\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">cache_page()</span></code></a>.</p>\n</section>","rootId":"how-to-upgrade-django-to-a-newer-version","toc":[{"title":"Letture richieste","anchor":"required-reading","children":[]},{"title":"Dipendenze","anchor":"dependencies","children":[]},{"title":"Risolvere i warning delle deprecation","anchor":"resolving-deprecation-warnings","children":[]},{"title":"Installazione","anchor":"installation","children":[]},{"title":"Testing","anchor":"testing","children":[]},{"title":"Deployment","anchor":"deployment","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to guides","url":"/it/5.2/howto/"}],"prev":{"docname":"howto/delete-app","title":"How to delete a Django application","url":"/it/5.2/howto/delete-app/"},"next":{"docname":"howto/windows","title":"Come installare Django su Windows","url":"/it/5.2/howto/windows/"},"formats":{"html":"/it/5.2/howto/upgrade-version/","markdown":"/it/5.2/howto/upgrade-version.md","json":"/it/5.2/howto/upgrade-version.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/howto/upgrade-version.txt","official":"https://docs.djangoproject.com/it/5.2/howto/upgrade-version/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}