{"title":"Atualizando o Django para uma nova versão","version":"2.2","locale":"pt-br","docname":"howto/upgrade-version","url":"/pt-br/2.2/howto/upgrade-version/","canonical":"https://djangodocs.dev/pt-br/2.2/howto/upgrade-version/","summary":"Apesar de ser um processo complexo as vezes, atualizar a versão do Django tem muitos benefícios: Novas características e melhorias são adicionadas. Erros são…","html":"<h1>Atualizando o Django para uma nova versão<a class=\"heading-anchor\" href=\"#upgrading-django-to-a-newer-version\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Apesar de ser um processo complexo as vezes, atualizar a versão do Django tem muitos benefícios:</p>\n<ul class=\"simple\">\n<li><p>Novas características e melhorias são adicionadas.</p></li>\n<li><p>Erros são ajustados.</p></li>\n<li><p>Versões anteriores do Django eventualmente não irão receber atualizações de segurança. (veja <a class=\"reference internal\" href=\"/pt-br/2.2/internals/release-process/#supported-versions-policy\"><span class=\"std std-ref\">Versões suportadas</span></a>).</p></li>\n<li><p>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.</p></li>\n</ul>\n<p>Aqui alguns pontos para considerar para ajudar fazer seu processo de atualização mais suave tanto quanto possível.</p>\n<section id=\"required-reading\">\n<h2>Leitura requerida<a class=\"heading-anchor\" href=\"#required-reading\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Se esta é sua primeira vez fazendo uma atualização, é útil ler o <a class=\"reference internal\" href=\"/pt-br/2.2/internals/release-process/\"><span class=\"doc\">guia sobre o processo de atualizações diferente</span></a>.</p>\n<p>Depois você deveria familiarizar-se com as mudanças que foram feitas na(s) nova(s) versõe(s) do Django.</p>\n<ul class=\"simple\">\n<li><p>Leia as <a class=\"reference internal\" href=\"/pt-br/2.2/releases/\"><span class=\"doc\">notas sobre a edição</span></a> para cara edição a partir da sua versão de Django corrente, até e inclusive a versão do Django pra qual que você planeja atualizar.</p></li>\n<li><p>Dê uma olhada no <a class=\"reference internal\" href=\"/pt-br/2.2/internals/deprecation/\"><span class=\"doc\">linha do tempo da depreciação</span></a> para as versões relevantes.</p></li>\n</ul>\n<p>Preste uma atenção particular a incompatibilidades das mudanças nas versões anteriores para ter uma idéia clara do que será necessário para uma atualização de sucesso.</p>\n<p>Se você está atualizando entre mais de uma versão (ex.: A.B para A.B+2), é normalmente mais fácil de atualizar cada versão incrementalmente (A.B para A.B+1 para A.B+2) ao invés de precisar fazer todas as modificações de cada versão lançada de uma vez só. Para cada versão lançada, use o patch de lançamento (A.B.C).</p>\n<p>A mesma abordagem de atualização incremental é recomendada quando for atualizar de um lançamento LTS para outro.</p>\n</section>\n<section id=\"dependencies\">\n<h2>Dependências<a class=\"heading-anchor\" href=\"#dependencies\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Na maioria dos casos para atualizar para a última versão do Django será necessário atualizar 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.</p>\n</section>\n<section id=\"resolving-deprecation-warnings\">\n<h2>Resolvendo alertas de descontinuidade<a class=\"heading-anchor\" href=\"#resolving-deprecation-warnings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Antes de atualizar, é uma boa idéia resolver qualquer alerta de descontinuidade emitido pelo projeto enquanto estiver usando sua versão do Django atual. Resolvendo estes alertas antes da atualização assegure-se que você tenha informações de todas as áreas do código que precisam de alteração.</p>\n<p>Em Python, avisos de código obsoleto são silenciados por padrão. Você deve ativá-los usando a opção de linha de comando Python <code class=\"docutils literal notranslate\"><span class=\"pre\">-Wa</span></code>, ou então a variável de ambiente <span class=\"target\" id=\"index-2\"></span><a class=\"reference external\" href=\"https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS\" title=\"(em Python v3.14)\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">PYTHONWARNINGS</span></code></a>. Por exemplo, para exibir alerta durante a execução de testes:</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 não estiver usando os testes do Django, você deve ter certeza que qualquer saída para o console não está sendo capturada o qual poderia esconder alertas de descontinuidade. Por exemplo, se usar o py.test:</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>py.test<span class=\"w\"> </span>tests<span class=\"w\"> </span>--capture<span class=\"o\">=</span>no\n</code></pre></div>\n<p>Resolva qualquer alerta de descontinuidade com sua versão atual do Django antes de continuar o processo de atualização.</p>\n<p>Aplicações de terceiros talvez usem APIs obsoletas  para suporta múltiplas versões do Django, então alertas de descontinuidade em pacotes que você tenha instalado não indicam necessariamente um problema. Se um pacote não dá suporte a última versão do Django, considere enviar uma “issue” ou um “pull request” para ele.</p>\n</section>\n<section id=\"installation\">\n<h2>Instalação<a class=\"heading-anchor\" href=\"#installation\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma vez que esteja pronto, é hora de <a class=\"reference internal\" href=\"/pt-br/2.2/topics/install/\"><span class=\"doc\">instalar a nova versão do Django</span></a>. Se estiver usando o <a class=\"reference external\" href=\"https://virtualenv.pypa.io/\">virtualenv</a> e for uma atualização grande, você talvez queira configurar um novo ambiente com todas as dependências primeiro.</p>\n<p>Se você tiver instalado Django com <a class=\"reference external\" href=\"https://pip.pypa.io/\">pip</a>, você pode usar a flag <code class=\"docutils literal notranslate\"><span class=\"pre\">--upgrade</span></code> ou <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>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> pip install -U Django\n</code></pre></div></div></div>\n</section>\n<section id=\"testing\">\n<h2>Testando<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Quando o novo ambiente estiver definido, <a class=\"reference internal\" href=\"/pt-br/2.2/topics/testing/overview/\"><span class=\"doc\">rode todo pacote de teste</span></a> para sua aplicação. De novo, é útil ligar os alertas de descontinuidade de modo que sejam mostrados na saída dos testes (você também pode usar a “flag” se testar sua aplicação manualmente usando <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>Depois que rodar os testes, concerte as falhas. Enquanto você tem as notas da versão frescas na sua cabeça, talvez seja uma boa hora para tirar vantagem das novas características do Django refatorando o código para eliminar qualquer alerta de descontinuidade.</p>\n</section>\n<section id=\"deployment\">\n<h2>Deploy<a class=\"heading-anchor\" href=\"#deployment\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>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 <a class=\"reference internal\" href=\"/pt-br/2.2/howto/deployment/\"><span class=\"doc\">implantar</span></a> seu projeto com Django atualizado.</p>\n<p>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 incompatibilidade no passado foi o cache de objetos <a class=\"reference internal\" href=\"/pt-br/2.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> serializados, diretamente ou indiretamente via o decorador <a class=\"reference internal\" href=\"/pt-br/2.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":"upgrading-django-to-a-newer-version","toc":[{"title":"Leitura requerida","anchor":"required-reading","children":[]},{"title":"Dependências","anchor":"dependencies","children":[]},{"title":"Resolvendo alertas de descontinuidade","anchor":"resolving-deprecation-warnings","children":[]},{"title":"Instalação","anchor":"installation","children":[]},{"title":"Testando","anchor":"testing","children":[]},{"title":"Deploy","anchor":"deployment","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Guias de “como fazer”","url":"/pt-br/2.2/howto/"}],"prev":{"docname":"howto/deployment/checklist","title":"Lista de verificação para distribuição","url":"/pt-br/2.2/howto/deployment/checklist/"},"next":{"docname":"howto/initial-data","title":"Fornecendo dados iniciais para modelos.","url":"/pt-br/2.2/howto/initial-data/"},"formats":{"html":"/pt-br/2.2/howto/upgrade-version/","markdown":"/pt-br/2.2/howto/upgrade-version.md","json":"/pt-br/2.2/howto/upgrade-version.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/howto/upgrade-version.txt","official":"https://docs.djangoproject.com/pt-br/2.2/howto/upgrade-version/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}