{"title":"Configurações do Django","version":"4.0","locale":"pt-br","docname":"topics/settings","url":"/pt-br/4.0/topics/settings/","canonical":"https://djangodocs.dev/pt-br/4.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/4.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/4.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>When you use Django, you have to tell it which settings you’re using. Do this\nby using an environment variable, <span class=\"target\" id=\"index-0\"></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>.</p>\n<p>The value of <span class=\"target\" id=\"index-1\"></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> should be in Python path syntax,\ne.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code>. Note that the settings module should be on the\nPython <a class=\"reference external\" href=\"https://diveinto.org/python3/your-first-python-program.html#importsearchpath\">import search path</a>.</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/4.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/4.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>The command <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">manage.py</span> <span class=\"pre\">diffsettings</span></code> displays differences between the\ncurrent settings file and Django’s default settings.</p>\n<p>Para mais detalhes, veja a documentação <a class=\"reference internal\" href=\"/pt-br/4.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>Because a settings file contains sensitive information, such as the database\npassword, you should make every attempt to limit access to it. For example,\nchange its file permissions so that only you and your web server’s user can\nread it. This is especially important in a shared-hosting environment.</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/4.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>There’s nothing stopping you from creating your own settings, for your own\nDjango apps, but follow these guidelines:</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>Using settings without setting <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><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>In some cases, you might want to bypass the <span class=\"target\" id=\"index-3\"></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>\nenvironment variable. For example, if you’re using the template system by\nitself, you likely don’t want to have to set up an environment variable\npointing to a settings module.</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/4.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/4.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>Either <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> or <span class=\"target\" id=\"index-4\"></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> is required<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>If you’re not setting the <span class=\"target\" id=\"index-5\"></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> environment\nvariable, you <em>must</em> call <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> at some point before using any code\nthat reads settings.</p>\n<p>If you don’t set <span class=\"target\" id=\"index-6\"></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> and don’t call\n<code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, Django will raise an <code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError</span></code> exception the first time\na setting is accessed.</p>\n<p>If you set <span class=\"target\" id=\"index-7\"></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>, access settings values somehow,\n<em>then</em> call <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code>, Django will raise a <code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeError</span></code> indicating\nthat settings have already been configured. There is a property for this\npurpose:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.conf.settings.configured\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.conf.settings.</span></span><span class=\"sig-name descname\"><span class=\"pre\">configured</span></span><a class=\"heading-anchor\" href=\"#django.conf.settings.configured\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\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>It boils down to this: Use exactly one of either <code class=\"docutils literal notranslate\"><span class=\"pre\">configure()</span></code> or\n<span class=\"target\" id=\"index-8\"></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>. Not both, and not neither.</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-11\"></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/4.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>Note that calling <code class=\"docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code> is only necessary if your code is truly\nstandalone. When invoked by your web server, or through <a class=\"reference internal\" href=\"/pt-br/4.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>, Django will handle this for you.</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/4.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":"Using settings without setting DJANGO_SETTINGS_MODULE","anchor":"using-settings-without-setting-django-settings-module","children":[{"title":"Definições padrão personalizadas","anchor":"custom-default-settings","children":[]},{"title":"Either configure() or DJANGO_SETTINGS_MODULE is required","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/4.0/topics/"}],"prev":{"docname":"topics/serialization","title":"Serialização de objetos Django","url":"/pt-br/4.0/topics/serialization/"},"next":{"docname":"topics/signals","title":"Signals","url":"/pt-br/4.0/topics/signals/"},"formats":{"html":"/pt-br/4.0/topics/settings/","markdown":"/pt-br/4.0/topics/settings.md","json":"/pt-br/4.0/topics/settings.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/topics/settings.txt","official":"https://docs.djangoproject.com/pt-br/4.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","it","pt-br","ko","es","el","pl"]}