{"title":"Aplicações","version":"6.0","locale":"pt-br","docname":"ref/applications","url":"/pt-br/6.0/ref/applications/","canonical":"https://djangodocs.dev/pt-br/6.0/ref/applications/","summary":"Django contém um registro de aplicações instaladas que armazena configuração e fornece introspecção. Ele também mantem uma lista de modelos </topics/db/models…","html":"<span id=\"applications\"></span><h1>Aplicações<a class=\"heading-anchor\" href=\"#module-django.apps\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django contém um registro de aplicações instaladas que armazena configuração e fornece introspecção. Ele também mantem uma lista de <span class=\"xref std std-doc\">modelos &lt;/topics/db/models</span> disponíveis.</p>\n<p>This registry is called <a class=\"reference internal\" href=\"#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">apps</span></code></a> and it’s available in\n<a class=\"reference internal\" href=\"#module-django.apps\" title=\"django.apps\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.apps</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">apps</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">apps</span><span class=\"o\">.</span><span class=\"n\">get_app_config</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">verbose_name</span>\n<span class=\"go\">&#39;Administration&#39;</span>\n</code></pre></div>\n<section id=\"projects-and-applications\">\n<h2>Projetos e aplicações<a class=\"heading-anchor\" href=\"#projects-and-applications\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O termo <strong>project</strong> descreve uma aplicação web Django. O pacote de projeto Python é definido primariamente por um módulo de configuração, que geralmente contêm outras coisas. Por exemplo, quando você executa <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span> <span class=\"pre\">startproject</span> <span class=\"pre\">mysite</span></code> você criará um diretório de projeto <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> que contêm o pacote Python <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> com os módulos <code class=\"docutils literal notranslate\"><span class=\"pre\">settings.py</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code>, e <code class=\"docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code>. O pacote do projeto geralmente é extendido para incluir outras coisas como fixtures, CSS e templates que não estão atrelados à nenhuma aplicação em particular.</p>\n<p>O <strong>project’s root directory</strong> (aquele que contêm <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code>) é geralmente o container de todas as aplicações do projeto que não estão instaladas separadamente.</p>\n<p>O termo <strong>application</strong> descreve um pacote Python que prove alguns conjunto de recursos. Aplicativos <a class=\"reference internal\" href=\"/pt-br/6.0/intro/reusable-apps/\"><span class=\"doc\">devem ser reutilizados</span></a> em projetos diferentes.</p>\n<p>Aplicações abrigam combinações de modelos, views, templates, templates tags, static files, URLs, middleware, etc. Estas são comumente ligados ao projeto na definição <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> e opcionalmente em outros mecanismos como URLconfs, a definição <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, ou por herança de templates.</p>\n<p>É importante entender que uma aplicação Django é apenas um conjunto de código que interage com várias partes do framework. Não existe um objeto <code class=\"docutils literal notranslate\"><span class=\"pre\">Application</span></code> propriamente dito. Entretanto, existem alguns lugares onde o Django precisa interagir com estas aplicações instaladas, geralmente para configuração e introspecção. É por isso que o registro de aplicações mantém os metadados em uma instância <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> para cada aplicação instalada.</p>\n<p>Não existe nenhuma restrição que defina que um pacote de projeto não possa ser considerado uma aplicação e tenha seus próprios modelos, etc. (seria necessário adicionar a <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>).</p>\n</section>\n<section id=\"configuring-applications\">\n<span id=\"configuring-applications-ref\"></span><h2>Configurandos as aplicações<a class=\"heading-anchor\" href=\"#configuring-applications\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Para configurar uma aplicação, crie um modulo “apps.py” dentro da aplicação, então defina a subclasse do <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> lá.</p>\n<p>Quando <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> contém o caminho pontilhado para um módulo de aplicativo, por padrão, se o Django encontra exatamente uma subclasse <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> no submódulo `` apps.py``, este usa aquela configuração para o aplicativo. Este comportamento pode ser desabilitado definindo <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AppConfig.default</span></code></a> como <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Se o módulo <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code> contiver mais de uma subclasse <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>, o Django irá procurar por uma única onde <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AppConfig.default</span></code></a> é <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Se a subclasse <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> não for encontrada, a classe base <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> será usada.</p>\n<p>Alternativamente, <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> pode conter o caminho pontilhado para uma classe de configuração para especificá-lo explicitamente:</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\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;polls.apps.PollsAppConfig&quot;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<section id=\"for-application-authors\">\n<h3>Para autores de aplicações<a class=\"heading-anchor\" href=\"#for-application-authors\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você está criando uma app plugável chamada “Rock ‘n’ roll”, aqui está como você poderia prover um nome apropriado para o admin:</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=\"c1\"># rock_n_roll/apps.py</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AppConfig</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span><span class=\"n\">AppConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;rock_n_roll&quot;</span>\n    <span class=\"n\">verbose_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Rock ’n’ roll&quot;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">RockNRollConfig</span></code> será carregado automaticamente se o <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> contiver <code class=\"docutils literal notranslate\"><span class=\"pre\">'rock_n_roll'</span></code>. Se você precisa evitar isso, defina <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">default</span></code></a> como <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> na definição da classe.</p>\n<p>Você pode fornecer várias subclasses <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> com comportamentos diferentes. Para dizer ao Django qual usar por padrão, defina <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">default</span></code></a> como <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> em sua definição. Se seus usuários quiserem escolher uma configuração não padrão, eles devem substituir <code class=\"docutils literal notranslate\"><span class=\"pre\">'rock_n_roll'</span></code> pelo caminho pontilhado para essa classe específica em sua configuração <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<p>O atributo <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AppConfig.name</span></code></a> diz ao Django a qual aplicativo esta configuração se aplica. Você pode definir qualquer outro atributo documentado na referência da API <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n<p>As subclasses <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> podem ser definidas em qualquer lugar. A convenção <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code> simplesmente permite que o Django os carregue automaticamente quando <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> contém o caminho para um módulo de aplicativo ao invés do caminho para uma classe de configuração.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>Se o seu código importa o registro de aplicações no <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code> da aplicação, o nome <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code> irá conflitar com o sub-módulo <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code>. A melhor prática é mover esse código para um sub-módulo e importá-lo. Uma alternativa é importar o registro com um nome diferente:</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.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">apps</span> <span class=\"k\">as</span> <span class=\"n\">django_apps</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"for-application-users\">\n<h3>Para usuários de aplicações<a class=\"heading-anchor\" href=\"#for-application-users\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se você está usando “Rock ’n’ roll” em um projeto chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">anthology</span></code>, mas quer mostrá-lo como “Jazz Manouche”, você pode fornecer sua própria configuração:</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=\"c1\"># anthology/apps.py</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">rock_n_roll.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RockNRollConfig</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">JazzManoucheConfig</span><span class=\"p\">(</span><span class=\"n\">RockNRollConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">verbose_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Jazz Manouche&quot;</span>\n\n\n<span class=\"c1\"># anthology/settings.py</span>\n\n<span class=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s2\">&quot;anthology.apps.JazzManoucheConfig&quot;</span><span class=\"p\">,</span>\n    <span class=\"c1\"># ...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Este exemplo mostra as classes de configuração específicas do projeto localizadas em um submódulo chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code>. Isso é uma convenção, não uma exigência. As subclasses <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> podem ser definidas em qualquer lugar.</p>\n<p>Nesta situação, <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> deve conter o caminho pontilhado para a classe de configuração porque reside fora de um aplicativo e, portanto, não pode ser detectado automaticamente.</p>\n</section>\n</section>\n<section id=\"application-configuration\">\n<h2>Configuração da aplicação<a class=\"heading-anchor\" href=\"#application-configuration\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AppConfig</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Objetos de configuração de uma aplicação armazenam meta-dados para uma aplicacão. Alguns atributos podem ser configurados nas subclasses <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>. Outros são definidos pelo Django e são somente para leitura.</p>\n</dd></dl>\n\n<section id=\"configurable-attributes\">\n<h3>Atributos configuráveis<a class=\"heading-anchor\" href=\"#configurable-attributes\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.name\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>O caminho completo para do Python para a aplicação, exemplo: <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p>\n<p>Este atributo define a qual aplicação a configuração se aplica. deve ser definido em todas as subclasses de <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n<p>Ele deve ser único dentro de todo o projeto Django.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.label\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nome curto para a aplicação, ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code></p>\n<p>Este atributo permite trocar o rótulo de uma aplicação quando duas aplicações tem rótulos conflitantes. Seu valor padrão é um último componente de <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>. ELe deve ser uma identificador Python válido.</p>\n<p>Ele deve ser único dentro de todo o projeto Django.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Aviso</p>\n<p>Changing this attribute after migrations have been applied for an\napplication will result in breaking changes to a project or, in the\ncase of a reusable app, any existing installs of that app. This is\nbecause <code class=\"docutils literal notranslate\"><span class=\"pre\">AppConfig.label</span></code> is used in database tables and migration\nfiles when referencing an app in the dependencies list.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.verbose_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.verbose_name\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nome legível para a aplicação, ex. “Administração”.</p>\n<p>O atributo padrão para `` label.title()``.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.path\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">path</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.path\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>caminho no Sistema de arquivo para o diretório da aplicação , ex.: ‘/usr/lib/pythonX.Y/dist-packages/django/contrib/admin’`.</p>\n<p>Na maioria dos casos, o Django pode automaticamente detectar e definir isso, mas você pode explicitamente sobrepor como um atributo de classe na sua sublcasse de <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>. Em alguma situações isso é requerido; por exemplo se o pacote da aplicação é um <a class=\"reference internal\" href=\"#namespace-package\">namespace package</a> com míltiplos caminhos.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.default\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">default</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.default\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Defina este atributo como <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> para evitar que o Django selecione uma classe de configuração automaticamente. Isso é útil quando <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code> define apenas uma subclasse <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> mas você não quer que o Django a use por padrão.</p>\n<p>Defina este atributo como <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> para que o Django selecione uma classe de configuração automaticamente. Isso é útil quando <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code> define mais de uma subclasse <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> e você quer que o Django use uma delas por padrão.</p>\n<p>Por padrão, este atributo não é definido.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.default_auto_field\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">default_auto_field</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.default_auto_field\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The implicit primary key type to add to models within this app.</p>\n<p>Reusable applications that define models <strong>must</strong> set this attribute to\nensure migrations included in the application match the models. Otherwise,\nmigrations will be generated for the application when a user runs\n<a class=\"reference internal\" href=\"/pt-br/6.0/ref/django-admin/#django-admin-makemigrations\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">makemigrations</span></code></a> with a different <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-DEFAULT_AUTO_FIELD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_AUTO_FIELD</span></code></a>,\nwhich may conflict with future migrations shipped by the application.</p>\n<p>For example, to keep using <a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/fields/#django.db.models.AutoField\" title=\"django.db.models.AutoField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AutoField</span></code></a>:</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\">default_auto_field</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.db.models.AutoField&quot;</span>\n</code></pre></div>\n<p>Por padrão, este é o valor de <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-DEFAULT_AUTO_FIELD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_AUTO_FIELD</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"read-only-attributes\">\n<h3>Atributos somente leitura<a class=\"heading-anchor\" href=\"#read-only-attributes\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.module\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">module</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.module\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Módulo raiz para a aplicação; por exemplo, <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;módulo</span> <span class=\"pre\">'django.contrib.admin'</span> <span class=\"pre\">vindo</span> <span class=\"pre\">de</span> <span class=\"pre\">'django/contrib/admin/__init__.py'&gt;</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.models_module\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">models_module</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.models_module\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Módulo contendo os models, e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;module</span> <span class=\"pre\">'django.contrib.admin.models'</span> <span class=\"pre\">from</span> <span class=\"pre\">'django/contrib/admin/models.py'&gt;</span></code>.</p>\n<p>Isso pode ser <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> se a aplicação nao contém um módulo <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>. Note que os sinais relacionados com o banco de dados tal como <a class=\"reference internal\" href=\"/pt-br/6.0/ref/signals/#django.db.models.signals.pre_migrate\" title=\"django.db.models.signals.pre_migrate\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">pre_migrate</span></code></a> e <a class=\"reference internal\" href=\"/pt-br/6.0/ref/signals/#django.db.models.signals.post_migrate\" title=\"django.db.models.signals.post_migrate\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">post_migrate</span></code></a> somente são emitidos por aplicações que conténham o módulo <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Métodos<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.get_models\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_models</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_auto_created</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_swapped</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_models\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retornar um iterável de classes <a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> para esta aplicação.</p>\n<p>Requer que o registro do aplicativo esteja totalmente povoado.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.get_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">require_ready</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_model\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna a <a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> com o nome dado <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> é insensível à capitularização -case-insensitive-.</p>\n<p>Resultará em :exc:’LookupError’ se esse modelo não existir na aplicação.</p>\n<p>Requires the app registry to be fully populated unless the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> argument is set to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> behaves\nexactly as in <a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">apps.get_model()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.ready\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ready</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.ready\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Subclasses podem substituir este método para realizar tarefas de inicialização tal como registrar “signals”. Ele é chamado tão logo o registro seja populado.</p>\n<p>Entretanto você não pode importar modelos a nível de modulo onde as classes <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> são definidas, você pode faze-lo in <code class=\"docutils literal notranslate\"><span class=\"pre\">ready()`,</span> <span class=\"pre\">usando</span> <span class=\"pre\">tanto</span> <span class=\"pre\">uma</span> <span class=\"pre\">instrução</span> <span class=\"pre\">de</span> <span class=\"pre\">``import</span></code> ou <a class=\"reference internal\" href=\"#django.apps.AppConfig.get_model\" title=\"django.apps.AppConfig.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_model()</span></code></a>.</p>\n<p>Se estiver registrando <a class=\"reference internal\" href=\"/pt-br/6.0/ref/signals/#module-django.db.models.signals\" title=\"django.db.models.signals: Signals sent by the model system.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">model</span> <span class=\"pre\">signals</span></code></a>, você pode referenciar o emissor por um rotulo string ao invés da classe do modelo</p>\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.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AppConfig</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.signals</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">pre_save</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span><span class=\"n\">AppConfig</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">ready</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># importing model classes</span>\n        <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MyModel</span>  <span class=\"c1\"># or...</span>\n\n        <span class=\"n\">MyModel</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_model</span><span class=\"p\">(</span><span class=\"s2\">&quot;MyModel&quot;</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># registering signals with the model&#39;s string label</span>\n        <span class=\"n\">pre_save</span><span class=\"o\">.</span><span class=\"n\">connect</span><span class=\"p\">(</span><span class=\"n\">receiver</span><span class=\"p\">,</span> <span class=\"n\">sender</span><span class=\"o\">=</span><span class=\"s2\">&quot;app_label.MyModel&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Aviso</p>\n<p>Although you can access model classes as described above, avoid\ninteracting with the database in your <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> implementation.\nThis includes model methods that execute queries\n(<a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a>,\n<a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete()</span></code></a>, manager methods etc.), and\nalso raw SQL queries via <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.connection</span></code>. Your\n<a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> method will run during startup of every management\ncommand. For example, even though the test database configuration is\nseparate from the production settings, <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">test</span></code> would still\nexecute some queries against your <strong>production</strong> database!</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>No processo de inicialização usual, o método <code class=\"docutils literal notranslate\"><span class=\"pre\">ready</span></code> é chamado apenas uma vez pelo Django. No entanto, em alguns casos específicos, particularmente em testes que estão mexendo com aplicativos instalados, <code class=\"docutils literal notranslate\"><span class=\"pre\">ready</span></code> pode ser chamado mais de uma vez. Nesse caso, escreva métodos idempotentes ou coloque uma flag em suas classes <code class=\"docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code> para evitar que o código seja executado mais de uma vez quando deveria ser executado exatamente uma vez.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"namespace-packages-as-apps\">\n<span id=\"namespace-package\"></span><h3>Pacotes de namespace como apps<a class=\"heading-anchor\" href=\"#namespace-packages-as-apps\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pacotes Python sem o “__init__.py” são conhecidos como “namespace packages” e podem estar espalhados entre multiplos diretorios em locais diferentes em “sys.path” (veja :pep:’420’).</p>\n<p>Aplicações Django requerem um único caminho baseado no sistema de arquivos onde o Django (dependendo da configuração) irá procurar por templates, ativos estáticos, etc. Sendo assim, pacotes de espaço de nomes podem ser aplicações Django somente se uma das seguintes for verdadeiro:</p>\n<ol class=\"arabic simple\">\n<li><p>O pacote de espaço de nome tem na verdade somente um localização (ex.: não está distribuído em mais de um diretório)</p></li>\n<li><p>A classe <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> usada para configurar a aplicação tem um atributo de classe <a class=\"reference internal\" href=\"#django.apps.AppConfig.path\" title=\"django.apps.AppConfig.path\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path</span></code></a>, o qual é o caminho absoluto do diretório que o Django irá usar como o único caminho básico  para a aplicação.</p></li>\n</ol>\n<p>Se nenhuma destas condições forem atendidas, Django irá emitir um erro <a class=\"reference internal\" href=\"/pt-br/6.0/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code></a>.</p>\n</section>\n</section>\n<section id=\"application-registry\">\n<h2>Registro do Aplicativo<a class=\"heading-anchor\" href=\"#application-registry\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps\">\n<span class=\"sig-name descname\"><span class=\"pre\">apps</span></span><a class=\"heading-anchor\" href=\"#django.apps.apps\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>O registro da aplicação fornece a seguinte API pública. Métodos que não estão listados abaixo são considerados privados e talvez mudem sem serem noticiados.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.ready\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ready</span></span><a class=\"heading-anchor\" href=\"#django.apps.apps.ready\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Atributo booleano que é passado para <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> depois que o registro está totalmente populado e todos os métodos <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">AppConfig.ready()</span></code></a> são chamados.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_configs\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_app_configs</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_configs\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna um iterável de instancias de <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_config\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_app_config</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_config\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna uma <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> para a aplicação com o dado <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code>. Emite um erro <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(em Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">LookupError</span></code></a> se tal aplicação não existir.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.is_installed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">is_installed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.is_installed\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Verifique se uma aplicação com o dado nome existe no registro. <code class=\"docutils literal notranslate\"><span class=\"pre\">app_name</span></code> é o nome completo  da app, exemplo <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">require_ready</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_model\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna a <a class=\"reference internal\" href=\"/pt-br/6.0/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> com o dado <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code> e``model_name``. Como um atalho, esse método também aceita um simples argumento na forma de <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.model_name</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> é case-insensitive, ou seja, não diferencia maiúsculas e minúsculas.</p>\n<p>Emite <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(em Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">LookupError</span></code></a> se a tal aplicação ou modelo não existir. Emite  <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ValueError\" title=\"(em Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ValueError</span></code></a> quando chamado com um argumento único que não contém exatamente um ponto.</p>\n<p>Requer o registro da aplicação para ser populado totalmente, a não ser que o argumento <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> esteja definido como <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Definindo o <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code>  para <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> permite procurar por padrões :ref:` enquanto o registro da aplicação esta sendo preenchido &lt;app-loading-process&gt;`, especificamente durante a segunda fase onde ele importa os modelos/padroes. Então <code class=\"docutils literal notranslate\"><span class=\"pre\">get_model()</span></code> têm o mesmo efeito de importar um modelo. O caso de uso principal é para configurar as classes de modelo com configurações, como <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTH_USER_MODEL</span></code></a>.</p>\n<p>Quando <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> é <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_model()</span></code> retorna uma classe de modelo que talvez não seja totalmente funcional (acessores reversos podem estar faltando, por exemplo) enquanto o registro do app não está completo. Por isso, é melhor deixar <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> com seu valor padrão <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> sempre que possível.</p>\n</dd></dl>\n\n</section>\n<section id=\"initialization-process\">\n<span id=\"app-loading-process\"></span><h2>Processo de Inicialização<a class=\"heading-anchor\" href=\"#initialization-process\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"how-applications-are-loaded\">\n<h3>Como as aplicações são carregadss<a class=\"heading-anchor\" href=\"#how-applications-are-loaded\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>When Django starts, <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a> is responsible for populating the\napplication registry.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.setup\">\n<span class=\"sig-name descname\"><span class=\"pre\">setup</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">set_prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.setup\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Configura o Django através:</p>\n<ul class=\"simple\">\n<li><p>Carregando configurações</p></li>\n<li><p>Configurando o “logging”.</p></li>\n<li><p>Se <code class=\"docutils literal notranslate\"><span class=\"pre\">set_prefix</span></code> é igual a True, definindo o prefixo do escript que resolve URL para <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-FORCE_SCRIPT_NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FORCE_SCRIPT_NAME</span></code></a> se estiver definido, ou caso contrário para <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>.</p></li>\n<li><p>Inicializando o registro do aplicativo.</p></li>\n</ul>\n<p>Essa função é chamada automáticamente.</p>\n<ul class=\"simple\">\n<li><p>When running an HTTP server via Django’s ASGI or WSGI support.</p></li>\n<li><p>Quando invocar um comando de gerenciamento.</p></li>\n</ul>\n<p>Ele deve ser chamado explicitamente em outros casos, por exemplo em scripts Python.</p>\n</dd></dl>\n\n<p>O registro da aplicaçào é inicializado em três estágios. Em cada estágio, o Django processa todas as aplicações na ordem que estÃo em <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<ol class=\"arabic\">\n<li><p>Primeiro Django importa cada item que está no <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<p>Se for uma classe de configuração do app, o Django importa o pacote raiz do aplicativo, definido pelo atributo <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">name</span></code></a>. Se for um pacote Python, o Django procura uma configuração de aplicativo em um submódulo <code class=\"docutils literal notranslate\"><span class=\"pre\">apps.py</span></code>, ou então cria uma configuração de aplicativo padrão.</p>\n<p><em>Neste momento, seu código não deveria importar nenhum modelo!</em></p>\n<p>Em outras opalavras, os pacotes da raiz da sua aplicação e os módulos que definem sua classes de configuração da aplicação não deveriam importar nenhum modelo, mesmo que indiretamente.</p>\n<p>Falando estritamente, o Django permite importar modelos uma vez que a aplicação de configuração está carregada. No entanto , a fim de evitar limitações desnecessárias na ordem definida em <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>, recomendamos fortemente não importar qualquer modelo neste estágio.</p>\n<p>Once this stage completes, APIs that operate on application configurations\nsuch as <a class=\"reference internal\" href=\"#django.apps.apps.get_app_config\" title=\"django.apps.apps.get_app_config\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_app_config()</span></code></a> become usable.</p>\n</li>\n<li><p>Então o Django tenta importar o submódulo <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code> de cada aplicação, se houver uma.</p>\n<p>Você deve definir ou importar todos os modelos no seu <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code> ou no <code class=\"docutils literal notranslate\"><span class=\"pre\">models/__init__.py</span></code> da sua aplicação. De outtro modo, o registro da aplicação talvez não seja totalmente populado neste ponto, o que pode causar um malfuncionamento do ORM.</p>\n<p>Once this stage completes, APIs that operate on models such as\n<a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_model()</span></code></a> become usable.</p>\n</li>\n<li><p>Finally Django runs the <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> method of each application\nconfiguration.</p></li>\n</ol>\n</section>\n<section id=\"troubleshooting\">\n<span id=\"applications-troubleshooting\"></span><h3>Solução de Problemas<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Aqui estão alguns problemas comuns que você talvez encontre durante a inicialização:</p>\n<ul>\n<li><p><a class=\"reference internal\" href=\"/pt-br/6.0/ref/exceptions/#django.core.exceptions.AppRegistryNotReady\" title=\"django.core.exceptions.AppRegistryNotReady\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppRegistryNotReady</span></code></a>: Isso acontece quando se importa uma configuração de aplicação ou um módulo de um modelo que aciona um código que depende do registro do app.</p>\n<p>For example, <a class=\"reference internal\" href=\"/pt-br/6.0/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext()</span></code></a> uses the app\nregistry to look up translation catalogs in applications. To translate at\nimport time, you need <a class=\"reference internal\" href=\"/pt-br/6.0/ref/utils/#django.utils.translation.gettext_lazy\" title=\"django.utils.translation.gettext_lazy\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext_lazy()</span></code></a>\ninstead. (Using <a class=\"reference internal\" href=\"/pt-br/6.0/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext()</span></code></a> would be a bug,\nbecause the translation would happen at import time, rather than at each\nrequest depending on the active language.)</p>\n<p>Executar as queries de banco de dados com o ORM em tempo de importação nos módulo de modelos também irá disparar a mesma exceção. O ORM não pode funcionar devidamente até que todos os modelos estejam disponíveis.</p>\n<p>This exception also happens if you forget to call <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a> in\na standalone Python script.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError:</span> <span class=\"pre\">cannot</span> <span class=\"pre\">import</span> <span class=\"pre\">name</span> <span class=\"pre\">...</span></code> Isso acontece se a sequência de importação termina em um loop.</p>\n<p>Para eliminar tais problemas, você deve minimizar a dependências entre seus módulos de modelos e fazer o menos possível durante o tempo de importação. Para evitar a execução de código em tempo de imporatação você pode move-lo para uma função e cachear seus resultados. O código será executado quando você precisar dos resultados pela primeira vez. Este conceito é conhecido como “avaliação preguiçosa”.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code> automaticamene realiza a auto-descoberta od módulos do <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> nas aplicações instaladas. Para impedir isso, altere seu <a class=\"reference internal\" href=\"/pt-br/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> para que contenha o <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin.apps.SimpleAdminConfig'</span></code> ao invés do <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">RuntimeWarning:</span> <span class=\"pre\">Accessing</span> <span class=\"pre\">the</span> <span class=\"pre\">database</span> <span class=\"pre\">during</span> <span class=\"pre\">app</span> <span class=\"pre\">initialization</span> <span class=\"pre\">is</span>\n<span class=\"pre\">discouraged.</span></code> This warning is triggered for database queries executed before\napps are ready, such as during module imports or in the\n<a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">AppConfig.ready()</span></code></a> method. Such premature database queries are\ndiscouraged because they will run during the startup of every management\ncommand, which will slow down your project startup, potentially cache stale\ndata, and can even fail if migrations are pending.</p>\n<p>For example, a common mistake is making a database query to populate form\nfield choices:</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\">class</span><span class=\"w\"> </span><span class=\"nc\">LocationForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n    <span class=\"n\">country</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ChoiceField</span><span class=\"p\">(</span><span class=\"n\">choices</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"k\">for</span> <span class=\"n\">c</span> <span class=\"ow\">in</span> <span class=\"n\">Country</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()])</span>\n</code></pre></div>\n<p>In the example above, the query from <code class=\"docutils literal notranslate\"><span class=\"pre\">Country.objects.all()</span></code> is executed\nduring module import, because the <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> is iterated over. To avoid the\nwarning, the form could use a <a class=\"reference internal\" href=\"/pt-br/6.0/ref/forms/fields/#django.forms.ModelChoiceField\" title=\"django.forms.ModelChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code></a>\ninstead:</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\">class</span><span class=\"w\"> </span><span class=\"nc\">LocationForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n    <span class=\"n\">country</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=</span><span class=\"n\">Country</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">())</span>\n</code></pre></div>\n<p>To make it easier to find the code that triggered this warning, you can make\nPython <a class=\"reference external\" href=\"https://docs.python.org/3/library/warnings.html#warning-filter\" title=\"(em Python v3.14)\"><span class=\"xref std std-ref\">treat warnings as errors</span></a> to reveal the\nstack trace, for example with <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-Werror</span> <span class=\"pre\">manage.py</span> <span class=\"pre\">shell</span></code>.</p>\n</li>\n</ul>\n</section>\n</section>","rootId":"module-django.apps","toc":[{"title":"Projetos e aplicações","anchor":"projects-and-applications","children":[]},{"title":"Configurandos as aplicações","anchor":"configuring-applications","children":[{"title":"Para autores de aplicações","anchor":"for-application-authors","children":[]},{"title":"Para usuários de aplicações","anchor":"for-application-users","children":[]}]},{"title":"Configuração da aplicação","anchor":"application-configuration","children":[{"title":"Atributos configuráveis","anchor":"configurable-attributes","children":[]},{"title":"Atributos somente leitura","anchor":"read-only-attributes","children":[]},{"title":"Métodos","anchor":"methods","children":[]},{"title":"Pacotes de namespace como apps","anchor":"namespace-packages-as-apps","children":[]}]},{"title":"Registro do Aplicativo","anchor":"application-registry","children":[]},{"title":"Processo de Inicialização","anchor":"initialization-process","children":[{"title":"Como as aplicações são carregadss","anchor":"how-applications-are-loaded","children":[]},{"title":"Solução de Problemas","anchor":"troubleshooting","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Referência da API","url":"/pt-br/6.0/ref/"}],"prev":{"docname":"ref/index","title":"Referência da API","url":"/pt-br/6.0/ref/"},"next":{"docname":"ref/checks","title":"O framework de verificação do sistema.","url":"/pt-br/6.0/ref/checks/"},"formats":{"html":"/pt-br/6.0/ref/applications/","markdown":"/pt-br/6.0/ref/applications.md","json":"/pt-br/6.0/ref/applications.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/applications.txt","official":"https://docs.djangoproject.com/pt-br/6.0/ref/applications/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}