Atualizando o Django para uma nova versão

Enquanto que isso pode ser as vezes um processo complexo, atualizar a versão do Django tem muitos benefícios:

  • Novas características e melhorias são adicionadas.

  • Erros são ajustados.

  • Antigas versões do Django eventualmente não irão receber atualizações de segurança. (veja Versões suportadas).

  • Atualizando assim que cada versão do Django fica disponível faz com que futuras atualizações sejam menos dolorosas, por mantendo sua base de código atualizada.

Aqui alguns pontos para considerar para ajudar fazer seu process ode atualização mais suave tanto quanto possível.

Leitura requerida

Se esta é sua primeira vez fazendo uma atualização, é útil ler o guia sobre o proesso de atualizações diferente.

Depois você deveria familiarizar-se com as mudanças que foram feitas na(s) verõe(s) nova(s) do Django.

Preste uma atenção particular a imcompatibilidades das mudanças nas versões anteriores para ter uma idéia clara do que será necessário para uma atualização de sucesso.

Dependências

Na marioria dos casos para atualizar para a última versão do Django será necessário atualiar as dependências do Django também. Se a versão do Django foi lançada recentemente ou se algumas de suas dependências não são muito bem mantidas, algumas dependências podem não dar suporte a versão do Django. Nestes casos você terá que esperar até que a nova versão das dependências sejam lançadas.

Resolving deprecation warnings

Before upgrading, it’s a good idea to resolve any deprecation warnings raised by your project while using your current version of Django. Fixing these warnings before upgrading ensures that you’re informed about areas of the code that need altering.

In Python, deprecation warnings are silenced by default. You must turn them on using the -Wall Python command line option or the PYTHONWARNINGS environment variable. For example, to show warnings while running tests:

$ python -Wall manage.py test

If you’re not using the Django test runner, you may need to also ensure that any console output is not captured which would hide deprecation warnings. For example, if you use py.test:

$ PYTHONWARNINGS=all py.test tests --capture=no

Resolve any deprecation warnings with your current version of Django before continuing the upgrade process.

Third party applications might use deprecated APIs in order to support multiple versions of Django, so deprecation warnings in packages you’ve installed don’t necessarily indicate a problem. If a package doesn’t support the latest version of Django, consider raising an issue or sending a pull request for it.

Instalação

Uma vez que esteja pronto, é hora de Instale a nova versão do Django. Se estiver usando o virtualenv e for uma atualização grande, você talvez queira configurar um novo ambiente com todas as depoendências primeiro.

Os passos exatos que serão necessários depende do seu processo de inatalação. O jeito mais conveniente é usar o pip com --upgrade ou o parametro -U:

$ pip install -U Django

O pip também automaticamente desinstala as versões anteriores do Django.

Se você usa outros processos de instalação, tavez seja necessário manualmente desinstalar a versão antig do Django e deve dar uma olhada nas instruções completas de instalação.

Testando

When the new environment is set up, run the full test suite for your application. Again, it’s useful to turn on deprecation warnings on so they’re shown in the test output (you can also use the flag if you test your app manually using manage.py runserver):

$ python -Wall manage.py test

Depois que rodar os testes, concerte as falhas. Enquanto você tem as notas da versão frescas na sa cabeça, talvez seja uma boa hora para tirar vantagem das novas caraceterísticas do Django refatorando o código para eliminar qualquer alerta de descontinuidade.

Implantação

Quando você estiver suficientemente confiante que sua aplicação funciona com a nova versão do Django, você está pronto para ir em frente e implantar seu projeto com Django atualizado.

Se você estiver usando o cache fornecido pelo Django, você deve considerar limpar o cache depois da atualização. De outro modo você pode ter problemas, por exemplo, se você estiver mantendo em cache objetos serializados e estes objetos não tem garantia de compatibilidade de serialização entre as versões do Django. Um problema de imcompatibilidade no passado foi o cache de objetos HttpResponse serializados, diretamente ou indiretamente via o decorador cache_page().

Back to Top