# Django 5.2.8 documentation

# Så här uppgraderar du Django till en nyare version

Även om det ibland kan vara en komplex process har uppgradering till den senaste Django-versionen flera fördelar:

- Nya funktioner och förbättringar läggs till.

- Buggar är åtgärdade.

- Äldre versioner av Django kommer så småningom inte längre att få säkerhetsuppdateringar. (se Versioner som stöds).

- Att uppgradera när varje ny Django-version finns tillgänglig gör framtida uppgraderingar mindre smärtsamma genom att hålla din kodbas uppdaterad.

Tools to help with version upgrades

Django has a vibrant ecosystem. There are automated upgrade helpers highlighted on the Community Ecosystem page.

Här är några saker att tänka på för att göra din uppgraderingsprocess så smidig som möjligt.

## Obligatorisk läsning

Om det är första gången du gör en uppgradering är det bra att läsa guiden om de olika releaseprocesserna.

Efteråt bör du bekanta dig med de ändringar som gjorts i den nya Django-versionen (eller versionerna):

- Läs versionsinformation för varje ”final” utgåva från den som kommer efter din nuvarande Django-version, till och med den version som du planerar att uppgradera till.

- Titta på deprecation timeline för relevanta versioner.

Var särskilt uppmärksam på bakåtkompatibla ändringar för att få en klar uppfattning om vad som krävs för en lyckad uppgradering.

Om du uppgraderar genom mer än en funktionsversion (t.ex. 2.0 till 2.2) är det vanligtvis enklare att uppgradera genom varje funktionsversion stegvis (2.0 till 2.1 till 2.2) än att göra alla ändringar för varje funktionsversion på en gång. För varje funktionsversion ska du använda den senaste patchversionen (t.ex. för 2.1 ska du använda 2.1.15).

Samma stegvisa uppgraderingsmetod rekommenderas när du uppgraderar från en LTS till nästa.

## Beroenden

I de flesta fall kommer det att vara nödvändigt att uppgradera till den senaste versionen av dina Django-relaterade beroenden också. Om Django-versionen nyligen släpptes eller om vissa av dina beroenden inte är väl underhållna, kanske vissa av dina beroenden ännu inte stöder den nya Django-versionen. I dessa fall kan du behöva vänta tills nya versioner av dina beroenden släpps.

## Lösning av varningar om föråldring

Innan du uppgraderar är det en bra idé att lösa eventuella deprecation-varningar som ditt projekt ger upphov till när du använder din nuvarande version av Django. Genom att åtgärda dessa varningar före uppgraderingen säkerställer du att du är informerad om områden i koden som behöver ändras.

I Python är deprecation-varningar tysta som standard. Du måste aktivera dem med hjälp av Pythons kommandoradsalternativ `-Wa` eller miljövariabeln `PYTHONWARNINGS`. Till exempel, för att visa varningar när du kör tester:

/ 

    $ python -Wa manage.py test

    ...\> py -Wa manage.py test

Om du inte använder Djangos testlöpare kan du också behöva se till att konsolutmatning inte fångas upp, vilket skulle dölja varningar om avskrivning. Till exempel, om du använder pytest:

    $ PYTHONWARNINGS=always pytest tests --capture=no

Lös eventuella varningar om utfasning med din nuvarande version av Django innan du fortsätter uppgraderingsprocessen.

Tredjepartsapplikationer kan använda föråldrade API:er för att stödja flera versioner av Django, så varningar om föråldrade API:er i paket som du har installerat behöver inte nödvändigtvis indikera ett problem. Om ett paket inte stöder den senaste versionen av Django, överväg att lyfta ett problem eller skicka en pull-begäran för det.

## Installation

När du är redo är det dags att installera den nya Django-versionen. Om du använder en `virtuell miljö` och det är en stor uppgradering, kanske du vill konfigurera en ny miljö med alla beroenden först.

Om du installerade Django med pip kan du använda flaggan `--upgrade` eller `-U`:

/ 

    $ python -m pip install -U Django

    ...\> py -m pip install -U Django

## Testar

När den nya miljön är konfigurerad, kör hela testsviten för din applikation. Återigen är det användbart att slå på deprecation-varningar så att de visas i testutdata (du kan också använda flaggan om du testar din app manuellt med `manage.py runserver`):

/ 

    $ python -Wa manage.py test

    ...\> py -Wa manage.py test

När du har kört testerna ska du åtgärda eventuella fel. Medan du har versionsinformation färskt i minnet kan det också vara en bra tid att dra nytta av nya funktioner i Django genom att refaktorisera din kod för att eliminera eventuella deprecation-varningar.

## Utplacering

När du är tillräckligt säker på att din app fungerar med den nya versionen av Django är du redo att gå vidare och deploy ditt uppgraderade Django-projekt.

Om du använder cachelagring som tillhandahålls av Django bör du överväga att rensa din cache efter uppgradering. Annars kan du stöta på problem, till exempel om du cachelagrar picklade objekt eftersom dessa objekt inte garanteras vara pickle-kompatibla mellan Django-versioner. Ett tidigare fall av inkompatibilitet var cachelagring av inlagda `HttpResponse`-objekt, antingen direkt eller indirekt via `cache_page()`-dekoratorn.