{"title":"Configurações do Django","version":"2.0","locale":"pt-br","docname":"topics/settings","url":"/pt-br/2.0/topics/settings/","canonical":"https://djangodocs.dev/pt-br/2.0/topics/settings/","summary":"Um arquivo de definições do Django contém todas as configurações da sua instalação do Django. Este documento explica como as configurações trabalham e quais…","html":"<h1>Configurações do Django<a class=\"heading-anchor\" href=\"#django-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Um arquivo de definições do Django contém todas as configurações da sua instalação do Django. Este documento explica como as configurações trabalham e quais definições estão disponíveis.</p>\n<section id=\"the-basics\">\n<h2>O básico<a class=\"heading-anchor\" href=\"#the-basics\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Um arquivo de definições é somente um módulo Python com variáveis de módulo.</p>\n<p>Aqui alguns exemplos de definições:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">ALLOWED_HOSTS</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">&#39;www.example.com&#39;</span><span class=\"p\">]</span>\n<span class=\"n\">DEBUG</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n<span class=\"n\">DEFAULT_FROM_EMAIL</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;webmaster@example.com&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>Se você definie o <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> para <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, você também precisa definir a definição de <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ALLOWED_HOSTS</span></code></a>.</p>\n</aside>\n<p>Como o arquivo de definições é um módulo Python, o seguinte se aplica:</p>\n<ul>\n<li><p>Ele não permite erros de sintaxe Python.</p></li>\n<li><p>É possível assinalar definições dinamicamente usando sintaxe Python normalmente. Por exemplo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">MY_SETTING</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"n\">i</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">30</span><span class=\"p\">)]</span>\n</code></pre></div>\n</li>\n<li><p>Pode importar valores de outros arquivos de definições.</p></li>\n</ul>\n</section>\n<section id=\"designating-the-settings\">\n<span id=\"django-settings-module\"></span><h2>Designando as definições<a class=\"heading-anchor\" href=\"#designating-the-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"std envvar\">\n<dt class=\"sig sig-object std\" id=\"envvar-DJANGO_SETTINGS_MODULE\">\n<span class=\"sig-name descname\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></span><a class=\"heading-anchor\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Quando você usa o Django, você deve dizer quais definições você está usando. Faça isso através da variável de ambiente chamada <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>.</p>\n<p>O valor do <code class=\"docutils literal notranslate\"><span class=\"pre\">Django_SETTINGS_MODULE``deve</span> <span class=\"pre\">estar</span> <span class=\"pre\">na</span> <span class=\"pre\">sintaxe</span> <span class=\"pre\">do</span> <span class=\"pre\">Python</span> <span class=\"pre\">path,</span> <span class=\"pre\">por</span> <span class=\"pre\">exemplo</span> <span class=\"pre\">``mysite.settings</span></code>. Note que o módulo de definições deve estar no <a class=\"reference external\" href=\"http://www.diveintopython3.net/your-first-python-program.html#importsearchpath\">import search path</a> do Python.</p>\n<section id=\"the-django-admin-utility\">\n<h3>A ferramenta <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code><a class=\"heading-anchor\" href=\"#the-django-admin-utility\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Quando usar <a class=\"reference internal\" href=\"/pt-br/2.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, você pode definir a variável de ambiente uam vez, ou passar explicitamente no módulo de definições cada vez que você rodar a ferramenta.</p>\n<p>Exmplo (Bash shell do Unix):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">export</span> <span class=\"n\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n<span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span>\n</code></pre></div>\n<p>Exemplo (shell do Windows):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"nb\">set</span> <span class=\"n\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n<span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span>\n</code></pre></div>\n<p>Use o argumento``–settings`` na linha de comando para especificar manualmente o módulo de definições:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">django</span><span class=\"o\">-</span><span class=\"n\">admin</span> <span class=\"n\">runserver</span> <span class=\"o\">--</span><span class=\"n\">settings</span><span class=\"o\">=</span><span class=\"n\">mysite</span><span class=\"o\">.</span><span class=\"n\">settings</span>\n</code></pre></div>\n</section>\n<section id=\"on-the-server-mod-wsgi\">\n<h3>No servidor (<code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code>)<a class=\"heading-anchor\" href=\"#on-the-server-mod-wsgi\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>No seu ambiente do servidor de produção , você precisará dizer à sua aplicação WSGI qual arquivo de definições utilizar. Faça isso com <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">os</span>\n\n<span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">environ</span><span class=\"p\">[</span><span class=\"s1\">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.settings&#39;</span>\n</code></pre></div>\n<p>Leia a <a class=\"reference internal\" href=\"/pt-br/2.0/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">documentação do Django mod_wsgi</span></a> para mais informações e outros elementos comuns para uma aplicação WSGI Django.</p>\n</section>\n</section>\n<section id=\"default-settings\">\n<h2>Definições padrão<a class=\"heading-anchor\" href=\"#default-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Um arquivo de definições do Django não tem que definir qualquer configuração se não for necessária. Cada definição tem um valor padrão. Estes valores padrão estão no módulo <code class=\"file docutils literal notranslate\"><span class=\"pre\">django/conf/global_settings.py</span></code>.</p>\n<p>Aqui está o algoritmo que o Django usa enquanto compila as definições:</p>\n<ul class=\"simple\">\n<li><p>Carrega as definições do <code class=\"docutils literal notranslate\"><span class=\"pre\">global_settings.py</span></code>.</p></li>\n<li><p>Carrega as definições do arquivo de definições especificado, sobrescrevendo as definições globais quando necessário.</p></li>\n</ul>\n<p>Note que o arquivo de definições <em>não</em> deve importar o <code class=\"docutils literal notranslate\"><span class=\"pre\">global_settings</span></code>, porque isso é redundante.</p>\n<section id=\"seeing-which-settings-you-ve-changed\">\n<h3>Vendo quais definições você alterou<a class=\"heading-anchor\" href=\"#seeing-which-settings-you-ve-changed\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Existe uma maneira fácil para verificar quais das suas definições diferem das definições padrão. O comando <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">anage.py</span> <span class=\"pre\">diffsettings</span></code> mostra as diferenças entre o arquivo de definições atuais e as definições padrão do Django.</p>\n<p>Para mais detalhes, veja a documentação <a class=\"reference internal\" href=\"/pt-br/2.0/ref/django-admin/#django-admin-diffsettings\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">diffsettings</span></code></a>.</p>\n</section>\n</section>\n<section id=\"using-settings-in-python-code\">\n<h2>Usando as definições em código Python<a class=\"heading-anchor\" href=\"#using-settings-in-python-code\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Nas suas apps Django, use as definições através da importação do objeto <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code>. Exemplo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"k\">if</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">DEBUG</span><span class=\"p\">:</span>\n    <span class=\"c1\"># Do something</span>\n</code></pre></div>\n<p>Note que o <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code> não é um módulo – é um objeto. Então não é possível importar definições individuais.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.settings</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">DEBUG</span>  <span class=\"c1\"># This won&#39;t work.</span>\n</code></pre></div>\n<p>Também note que seu código <em>não</em> deve importar nem o <code class=\"docutils literal notranslate\"><span class=\"pre\">global_settings</span></code> nem seu próprio arquivo de definições. O <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings</span></code> torna o conceito das definições padrão abstrato bem como as definições específicas do site; ele apresenta uma única interface. Ele também desacopla o código que usa as definições da localização das suas definições.</p>\n</section>\n<section id=\"altering-settings-at-runtime\">\n<h2>Alterando as definições em tempo de execução<a class=\"heading-anchor\" href=\"#altering-settings-at-runtime\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Você não deve alterar as definições dentro de sua aplicação durante a execução. Por exemplo, não faça isso em uma “view”:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">DEBUG</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>   <span class=\"c1\"># Don&#39;t do this!</span>\n</code></pre></div>\n<p>O único local onde você deve assinalar a definições é em um arquivo de definições.</p>\n</section>\n<section id=\"security\">\n<h2>Segurança<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Como o arquivo de definições contém informações sensíveis, tal como a senha do banco de dados, você deve fazer todas as tentativas de limitar acesso a ele. Por exemplo, alterar a permissão deste arquivo para que somente você e o usuário do servidor web possam lê-lo. Isso é especialmente importante em um ambiente de hospedagem compartilhado.</p>\n</section>\n<section id=\"available-settings\">\n<h2>Configurações disponíveis.<a class=\"heading-anchor\" href=\"#available-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Para uma lista completa de configurações disponíveis, veja a <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/\"><span class=\"doc\">referência de configurações</span></a>.</p>\n</section>\n<section id=\"creating-your-own-settings\">\n<h2>Criando suas próprias configurações<a class=\"heading-anchor\" href=\"#creating-your-own-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Não há nada que o impeça de criar suas próprias configurações, para sua própria aplicação Django. Apenas siga estas orientações:</p>\n<ul class=\"simple\">\n<li><p>Nomes de definições devem estar em maiúsculo.</p></li>\n<li><p>Não reinvente uma configuração já existente.</p></li>\n</ul>\n<p>Para definições que são sequências, mesmo o Django usa listas, mas isso é apenas uma convenção.</p>\n</section>\n<section id=\"using-settings-without-setting-django-settings-module\">\n<span id=\"settings-without-django-settings-module\"></span><h2>Usando as configurações sem definir <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code><a class=\"heading-anchor\" href=\"#using-settings-without-setting-django-settings-module\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Em alguns casos, você talvez queira ignorar a variável de ambiente <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>. Por exemplo, se você está usando somente o sistema de templates, você talvez gostaria de não definir uma variável de ambiente apontando para o módulo de definições.</p>\n<p>Nestes casos, você pode configurar manualmente as definições. Faça isso através da chamada:</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.conf.settings.configure\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.conf.settings.</span></span><span class=\"sig-name descname\"><span class=\"pre\">configure</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default_settings</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">settings</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.conf.settings.configure\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Exemplo</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Passe ao <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> quantos argumentos nomeados você quiser, com cada argumento representando uma configuração e seu valor. Cada nome de argumento deve ser todo em maiúsculo, com o mesmo nome da configuração descrita acima. Se uma definição em particular não for passada para o <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> e e for necessária em algum ponto a diante, o Django irá usar o valor padrão para aquela configuração.</p>\n<p>Configurando o Django desta maneira é sobretudo necessário – e, realmente, recomendado quando você está usando uma parte do framework dentro de uma aplicação maior.</p>\n<p>Consequentemente, quando configurado através do <code class=\"docutils literal notranslate\"><span class=\"pre\">settings.configure()</span></code>, o Django não irá fazer qualquer modificação nas variáveis de ambiente do processo (veja a documentação do <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> para o porque disso não ocorrer normalmente). Ele assume que você já está com todo o controle do seu ambiente nestes casos.</p>\n<section id=\"custom-default-settings\">\n<h3>Definições padrão personalizadas<a class=\"heading-anchor\" href=\"#custom-default-settings\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você quer que os valores padrão venham de algum outro lugar que não o <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.global_settings</span></code>, você pode passar em um módulo ou classe que forneça as definições padrão como o argumento <code class=\"docutils literal notranslate\"><span class=\"pre\">default_settings</span></code> (ou como o primeiro argumento opcional) na chamada do <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>.</p>\n<p>Neste exemplo, definições padrão são pegas do <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code>, e a definição de <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> é definida como <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, apesar de seu valor em <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">myapp_defaults</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">default_settings</span><span class=\"o\">=</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>O exemplo seguinte, o qual usa <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp_defaults</span></code> como um argumento posicional, é equivalente:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Normalmente , você não precisa sobrescrever os padrões desta maneira. Os padrões do Django são suficientemente administráveis de modo que você pode usá-los tranquilamente. Esteja ciente que se você passar um novo módulo padrão, este irá <em>substituir</em> totalmente os padrões do Django, de modo que você precisa especificar um valor para cada definição existente que talvez seja usado no código que estiver importando. Verifique em <code class=\"docutils literal notranslate\"><span class=\"pre\">django.conf.settings.global_settings</span></code> a lista completa.</p>\n</section>\n<section id=\"either-configure-or-django-settings-module-is-required\">\n<h3>É requerido o <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> ou o <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>.<a class=\"heading-anchor\" href=\"#either-configure-or-django-settings-module-is-required\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você não definir a variável de ambiente <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>, você <em>deve</em> chamar a <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> em algum ponto usando qualquer código que leia as definições.</p>\n<p>Se você não definir o <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code> e não chamar a <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, o Django irá emitir uma excessão <code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError</span></code> na primeira vez que uma das definições for acessada.</p>\n<p>Se for definido o <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>, acessar as definições de alguma maneira, e <em>então</em> chamar a <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, o Django irá emitir um <code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeError</span></code> indicando que as definições já foram configuradas. Existe uma propriedade somente para este propósito:</p>\n<p>Por exemplo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configured</span><span class=\"p\">:</span>\n    <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>E mais, é um erro chamar o <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> mais de uma vez, ou chamar o <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> depois que qualquer definição tenha sido acessada.</p>\n<p>Isso nos traz: use exatamente um das opções, ou o <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> ou o <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>. Não ambos, e não nenhuma delas.</p>\n</section>\n<section id=\"calling-django-setup-is-required-for-standalone-django-usage\">\n<h3>É mandatório chamar o <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> para o usar o Django de modo “standalone”<a class=\"heading-anchor\" href=\"#calling-django-setup-is-required-for-standalone-django-usage\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você está usando componentes do Django de modo “standalone” – por exemplo, escreveu um script Python o qual carrega alguns templates Django e os renderiza, ou usa o ORM para ler alguns dados – existe mais um passo que é necessário além de configurar as definições.</p>\n<p>Depois de definir ou o <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> ou chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, precisará chamar <a class=\"reference internal\" href=\"/pt-br/2.0/ref/applications/#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a>  para carregar suas definições e popular o registro da aplicação Django. Por exemplo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">django</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">myapp_defaults</span>\n\n<span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">configure</span><span class=\"p\">(</span><span class=\"n\">default_settings</span><span class=\"o\">=</span><span class=\"n\">myapp_defaults</span><span class=\"p\">,</span> <span class=\"n\">DEBUG</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"n\">django</span><span class=\"o\">.</span><span class=\"n\">setup</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Now this script or any imported module can use any part of Django it needs.</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n</code></pre></div>\n<p>Repare que só é necessário chamar <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> se o seu código é realmente “standalone”. Quando chamado pelo seu servidor web, ou através do <a class=\"reference internal\" href=\"/pt-br/2.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, o Django irá fazer isso por você.</p>\n<aside class=\"admonition-django-setup-may-only-be-called-once admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> deve ser chamado uma única vez.</p>\n<p>Portanto, evite colocar lógica de aplicação reutilizável em scripts “standalone” de modo que tenha que importar o script em algum lugar da aplicação. Se você não puder evitar isso, coloque a chamada do  <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> dentro de um bloco <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"k\">if</span> <span class=\"vm\">__name__</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;__main__&#39;</span><span class=\"p\">:</span>\n    <span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">django</span>\n    <span class=\"n\">django</span><span class=\"o\">.</span><span class=\"n\">setup</span><span class=\"p\">()</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Ver também</p>\n<dl class=\"simple\">\n<dt><a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/\"><span class=\"doc\">A referência sobre configurações</span></a></dt><dd><p>Contém uma lista completa das configurações do “core” e das aplicações do “contrib”.</p>\n</dd>\n</dl>\n</aside>\n</section>\n</section>","rootId":"django-settings","toc":[{"title":"O básico","anchor":"the-basics","children":[]},{"title":"Designando as definições","anchor":"designating-the-settings","children":[{"title":"A ferramenta django-admin","anchor":"the-django-admin-utility","children":[]},{"title":"No servidor (mod_wsgi)","anchor":"on-the-server-mod-wsgi","children":[]}]},{"title":"Definições padrão","anchor":"default-settings","children":[{"title":"Vendo quais definições você alterou","anchor":"seeing-which-settings-you-ve-changed","children":[]}]},{"title":"Usando as definições em código Python","anchor":"using-settings-in-python-code","children":[]},{"title":"Alterando as definições em tempo de execução","anchor":"altering-settings-at-runtime","children":[]},{"title":"Segurança","anchor":"security","children":[]},{"title":"Configurações disponíveis.","anchor":"available-settings","children":[]},{"title":"Criando suas próprias configurações","anchor":"creating-your-own-settings","children":[]},{"title":"Usando as configurações sem definir DJANGO_SETTINGS_MODULE","anchor":"using-settings-without-setting-django-settings-module","children":[{"title":"Definições padrão personalizadas","anchor":"custom-default-settings","children":[]},{"title":"É requerido o configure() ou o DJANGO_SETTINGS_MODULE.","anchor":"either-configure-or-django-settings-module-is-required","children":[]},{"title":"É mandatório chamar o django.setup() para o usar o Django de modo “standalone”","anchor":"calling-django-setup-is-required-for-standalone-django-usage","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Usando o Django","url":"/pt-br/2.0/topics/"}],"prev":{"docname":"topics/serialization","title":"Serialização de objetos Django","url":"/pt-br/2.0/topics/serialization/"},"next":{"docname":"topics/signals","title":"Signals","url":"/pt-br/2.0/topics/signals/"},"formats":{"html":"/pt-br/2.0/topics/settings/","markdown":"/pt-br/2.0/topics/settings.md","json":"/pt-br/2.0/topics/settings.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/topics/settings.txt","official":"https://docs.djangoproject.com/pt-br/2.0/topics/settings/","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"]}