{"title":"Escrevendo comandos do Django Admin personalizados","version":"1.9","locale":"pt-br","docname":"howto/custom-management-commands","url":"/pt-br/1.9/howto/custom-management-commands/","canonical":"https://djangodocs.dev/pt-br/1.9/howto/custom-management-commands/","summary":"Os aplicativos podem registrar suas próprias ações com manage.py. Por exemplo, você pode querer adicionar uma ação manage.py para uma aplicação Django que…","html":"<span id=\"writing-custom-django-admin-commands\"></span><h1>Escrevendo comandos do <code class=\"docutils literal notranslate\">Django Admin</code> personalizados<a class=\"heading-anchor\" href=\"#module-django.core.management\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Os aplicativos podem registrar suas próprias ações com <code class=\"docutils literal notranslate\">manage.py</code>. Por exemplo, você pode querer adicionar uma ação <code class=\"docutils literal notranslate\">manage.py</code> para uma aplicação Django que você está distribuindo. Neste documento, construiremos um comando customizado <code class=\"docutils literal notranslate\">closepoll</code> para a aplicação <code class=\"docutils literal notranslate\">polls</code> do <a class=\"reference internal\" href=\"/pt-br/1.9/intro/tutorial01/\"><span class=\"doc\">tutorial</span></a>.</p>\n<p>Pra tal, adicione um diretório  <code class=\"docutils literal notranslate\">management/commands</code>  a sua aplicação. O Django irá registrar um comando <code class=\"docutils literal notranslate\">manage.py</code> para cada módulo Python dentro deste diretório, cujo o nome não inicie com underscore. 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>polls<span class=\"o\">/</span>\n    <span class=\"fm\">__init__</span><span class=\"o\">.</span>py\n    models<span class=\"o\">.</span>py\n    management<span class=\"o\">/</span>\n        <span class=\"fm\">__init__</span><span class=\"o\">.</span>py\n        commands<span class=\"o\">/</span>\n            <span class=\"fm\">__init__</span><span class=\"o\">.</span>py\n            _private<span class=\"o\">.</span>py\n            closepoll<span class=\"o\">.</span>py\n    tests<span class=\"o\">.</span>py\n    views<span class=\"o\">.</span>py\n</code></pre></div>\n<p>Em Python 2, tenha certeza de incluir arquivo <code class=\"docutils literal notranslate\">__init__.py</code> em ambos os diretórios <code class=\"docutils literal notranslate\">management</code> e <code class=\"docutils literal notranslate\">management/commands</code> como feito acima ou seus comandos  não serão detectados.</p>\n<p>Neste exemplo, o comando <code class=\"docutils literal notranslate\">closepoll</code> estará disponível a qualquer projeto que inclui a aplicativo <code class=\"docutils literal notranslate\">polls</code> em :setting: INSTALLED_APPS.</p>\n<p>O módulo <code class=\"docutils literal notranslate\">_private.py</code> não estará disponível como um “management command”</p>\n<p>O módulo <code class=\"docutils literal notranslate\">closepoll.py</code> tem apenas uma exigência – deve definir uma classe <code class=\"docutils literal notranslate\">Command</code> que se extende <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> ou um dos seus <span class=\"xref std std-ref\">subclasses</span>.</p>\n<aside class=\"admonition-standalone-scripts admonition\" role=\"note\">\n<p class=\"admonition-title\">scripts autônomos</p>\n<p>“Management-comands” customizados, são especialmente úteis para a execução de scripts independentes ou para scripts que são periodicamente executadas a partir do crontab do UNIX ou do painel de controle de tarefas agendadas do Windows.</p>\n</aside>\n<p>Para implementar o comando, edite <code class=\"docutils literal notranslate\">polls/management/command/closepoll.py</code> para que fique assim:</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=\"nn\">django.core.management.base</span> <span class=\"kn\">import</span> BaseCommand<span class=\"p\">,</span> CommandError\n<span class=\"kn\">from</span> <span class=\"nn\">polls.models</span> <span class=\"kn\">import</span> Question <span class=\"k\">as</span> Poll\n\n<span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    help <span class=\"o\">=</span> <span class=\"s1\">&#39;Closes the specified poll for voting&#39;</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> parser<span class=\"p\">):</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">,</span> nargs<span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n        <span class=\"k\">for</span> poll_id <span class=\"ow\">in</span> options<span class=\"p\">[</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">]:</span>\n            <span class=\"k\">try</span><span class=\"p\">:</span>\n                poll <span class=\"o\">=</span> Poll<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span>poll_id<span class=\"p\">)</span>\n            <span class=\"k\">except</span> Poll<span class=\"o\">.</span>DoesNotExist<span class=\"p\">:</span>\n                <span class=\"k\">raise</span> CommandError<span class=\"p\">(</span><span class=\"s1\">&#39;Poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot; does not exist&#39;</span> <span class=\"o\">%</span> poll_id<span class=\"p\">)</span>\n\n            poll<span class=\"o\">.</span>opened <span class=\"o\">=</span> <span class=\"kc\">False</span>\n            poll<span class=\"o\">.</span>save<span class=\"p\">()</span>\n\n            <span class=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>style<span class=\"o\">.</span>SUCCESS<span class=\"p\">(</span><span class=\"s1\">&#39;Successfully closed poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot;&#39;</span> <span class=\"o\">%</span> poll_id<span class=\"p\">))</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Antes de Django 1.8, comandos de gerenciamento foram baseados no módulo <a class=\"reference external\" href=\"https://docs.python.org/3/library/optparse.html#module-optparse\" title=\"(em Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">optparse</code></a> e ​​argumentos posicionais eram passados ​​em <code class=\"docutils literal notranslate\">*args</code> enquanto argumentos opcionais eram passados ​​em <code class=\"docutils literal notranslate\">**options</code>. Agora que os comandos de gerenciamento usam  <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(em Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">argparse</code></a> para fazer o parser dos argumentos, todos os argumentos são passados ​​em <code class=\"docutils literal notranslate\">**options</code> por padrão, a menos que argumentos posicionais sejam nomeados para <code class=\"docutils literal notranslate\">args</code> (modo de compatibilidade). Encorajamos a usar exclusivamente <code class=\"docutils literal notranslate\">**options</code> para novos comandos.</p>\n</aside>\n<aside class=\"admonition admonition-note\" id=\"management-commands-output\" role=\"note\">\n<p class=\"admonition-title\">Nota</p>\n<p>Quando estiver usando comandos de gerenciamento e desejar enviar a saída para console, deve se escrever para o  `` self.stdout`` e <code class=\"docutils literal notranslate\">self.stderr</code>, em vez de imprimir para o <code class=\"docutils literal notranslate\">stdout</code> e <code class=\"docutils literal notranslate\">stderr</code> diretamente. Ao usar esses proxies, torna-se muito mais fácil para testar o seu comando personalizado. Observe também que você não precisa terminar mensagens com um caractere de nova linha, este será adicionado automaticamente, a menos que você especifique o parâmetro <code class=\"docutils literal notranslate\">ending</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=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"s2\">&quot;Unterminated line&quot;</span><span class=\"p\">,</span> ending<span class=\"o\">=</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<p>O novo comando personalizado pode ser chamado usando <code class=\"docutils literal notranslate\">python manage.py closepoll &lt;poll_id&gt;</code>.</p>\n<p>The <code class=\"docutils literal notranslate\">handle()</code> method takes one or more <code class=\"docutils literal notranslate\">poll_ids</code> and sets <code class=\"docutils literal notranslate\">poll.opened</code>\nto <code class=\"docutils literal notranslate\">False</code> for each one. If the user referenced any nonexistent polls, a\n<a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a> is raised. The <code class=\"docutils literal notranslate\">poll.opened</code> attribute does not exist in\nthe <a class=\"reference internal\" href=\"/pt-br/1.9/intro/tutorial01/\"><span class=\"doc\">tutorial</span></a> and was added to\n<code class=\"docutils literal notranslate\">polls.models.Question</code> for this example.</p>\n<section id=\"accepting-optional-arguments\">\n<span id=\"custom-commands-options\"></span><h2>Aceitando argumentos opcionais<a class=\"heading-anchor\" href=\"#accepting-optional-arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O mesmo <code class=\"docutils literal notranslate\">closepoll</code> poderia ser facilmente modificado para excluir uma determinada “poll”, ao invés de fechá-lo, aceitando as opções de linha de comando adicionais. Estas opções personalizadas podem ser adicionadas no método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\">add_arguments()</code></a> como este:</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=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> parser<span class=\"p\">):</span>\n        <span class=\"c1\"># Positional arguments</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">,</span> nargs<span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Named (optional) arguments</span>\n        parser<span class=\"o\">.</span>add_argument<span class=\"p\">(</span>\n            <span class=\"s1\">&#39;--delete&#39;</span><span class=\"p\">,</span>\n            action<span class=\"o\">=</span><span class=\"s1\">&#39;store_true&#39;</span><span class=\"p\">,</span>\n            dest<span class=\"o\">=</span><span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">,</span>\n            default<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n            help<span class=\"o\">=</span><span class=\"s1\">&#39;Delete poll instead of closing it&#39;</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        <span class=\"k\">if</span> options<span class=\"p\">[</span><span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">]:</span>\n            poll<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Anteriormente, somente a biblioteca padrão <a class=\"reference external\" href=\"https://docs.python.org/3/library/optparse.html#module-optparse\" title=\"(em Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">optparse</code></a>  era aceita e era necessário “extender” a variável do comando <code class=\"docutils literal notranslate\">option_list</code> com` optparse.make_option()`.</p>\n</aside>\n<p>A opção ( <code class=\"docutils literal notranslate\">delete</code> no nosso exemplo) está disponível no parâmetro dict das opções do método “hanfle()”. Veja  <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(em Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">argparse</code></a> na documentaçao do Python para saber mais sobre o uso do <code class=\"docutils literal notranslate\">add_argument</code>.</p>\n<p>Além de ser capaz de adicionar opções de linha de comando personalizada, todos <a class=\"reference internal\" href=\"/pt-br/1.9/ref/django-admin/\"><span class=\"doc\">comandos de gereciamento</span></a>  aceitam algumas opções padrão, tais como <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">:opção:`--verbosity`</span></a> e <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">:opção:`--traceback`</span></a>.</p>\n</section>\n<section id=\"management-commands-and-locales\">\n<span id=\"id1\"></span><h2>Comandos de Gerenciamento e localidades<a class=\"heading-anchor\" href=\"#management-commands-and-locales\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Por padrão, o método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.execute\" title=\"django.core.management.BaseCommand.execute\"><code class=\"xref py py-meth docutils literal notranslate\">BaseCommand.execute()</code></a> desativa traduções porque alguns comandos internos do Django executam várias tarefas (por exemplo, renderização de conteúdo voltado ao usuário e popular o banco de dados) que exigem uma língua neutra no  projeto.</p>\n<aside class=\"version-note version-changed\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Nas versões anteriores, o Django forçou a localização para “en-us” ao invés de desativar traduções.</p>\n</aside>\n<p>Se por algum motivo, o seu comando personalizado de gerenciamento precisar usar um local fixo, é necessário que o suporte a “locale” seja  ativar e desativado manualmente no método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a> usando as funções fornecidas pelo código de apoio I18N:</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=\"nn\">django.core.management.base</span> <span class=\"kn\">import</span> BaseCommand<span class=\"p\">,</span> CommandError\n<span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> translation\n\n<span class=\"k\">class</span> <span class=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    can_import_settings <span class=\"o\">=</span> <span class=\"kc\">True</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>options<span class=\"p\">):</span>\n\n        <span class=\"c1\"># Activate a fixed locale, e.g. Russian</span>\n        translation<span class=\"o\">.</span>activate<span class=\"p\">(</span><span class=\"s1\">&#39;ru&#39;</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Or you can activate the LANGUAGE_CODE # chosen in the settings:</span>\n        <span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n        translation<span class=\"o\">.</span>activate<span class=\"p\">(</span>settings<span class=\"o\">.</span>LANGUAGE_CODE<span class=\"p\">)</span>\n\n        <span class=\"c1\"># Your command logic here</span>\n        <span class=\"o\">...</span>\n\n        translation<span class=\"o\">.</span>deactivate<span class=\"p\">()</span>\n</code></pre></div>\n<p>Outra necessidade pode ser que o seu comando simplesmente deva utilizar a definição de “locale” definido no “settings” e o Django deve ser mantido sem desativá-lo. Você pode fazer isso usando a opção <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.leave_locale_alone\" title=\"django.core.management.BaseCommand.leave_locale_alone\"><code class=\"xref py py-data docutils literal notranslate\">BaseCommand.leave_locale_alone</code></a>.</p>\n<p>Ao trabalhar nos cenários descritos acima, porém, considere que comandos de gerenciamento de sistemas em tipicamente que ser muito cuidadosos sobre o funcionamento em locais não-uniformes, de modo que você pode precisar:</p>\n<ul class=\"simple\">\n<li><p>Verifique se o <a class=\"reference internal\" href=\"/pt-br/1.9/ref/settings/#std-setting-USE_I18N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_I18N</code></a> é sempre <code class=\"docutils literal notranslate\">True</code> ao executar o comando (este é um bom exemplo dos potenciais problemas decorrentes de um ambiente de execução dinâmico que comandos do Django evitam desativando traduções).</p></li>\n<li><p>Rever o código do seu comando e o código que este chama para diferenças de comportamento quando os locais são alteradas e avaliar o seu impacto sobre o comportamento previsível de seu comando.</p></li>\n</ul>\n</section>\n<section id=\"testing\">\n<h2>Testando<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Informações sobre como testar comandos de gerenciamento personalizado pode ser encontrada no <a class=\"reference internal\" href=\"/pt-br/1.9/topics/testing/tools/#topics-testing-management-commands\"><span class=\"std std-ref\">documentação de teste</span></a>.</p>\n</section>\n<section id=\"command-objects\">\n<h2>Objetos Command<a class=\"heading-anchor\" href=\"#command-objects\"><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.core.management.BaseCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>A classe base a partir da qual todos os comandos de gestão, em última análise derivam.</p>\n<p>Use esta classe se você quer acesso a todos os mecanismos que realizam o parse dos argumentos da linha de comando e verificar que código chamar em resposta; se você não precisa mudar nada deste comportamento, considere usar um desses <span class=\"xref std std-ref\">subclasses</span>.</p>\n<p>Subclasssing  a classe <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> requer que você implemente o método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>.</p>\n<section id=\"attributes\">\n<h3>Atributos<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Todos os atributos podem ser definidos em sua classe derivada e pode ser usado nas <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> de <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.args\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">args</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.args\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A string que lista os argumentos aceitos pelo comando, adequado para o uso em mensagens de ajuda; ex., um comando que tem uma lista de nomes de aplicativos pode definir isso como ‘&lt;app_label app_label …&gt;’.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Descontinuado desde a versão 1.8: </span>Isto deve ser feito agora no método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\">add_arguments()</code></a>,  chamando o método <code class=\"docutils literal notranslate\">parser.add_argument()</code>. Veja o exemplo <code class=\"docutils literal notranslate\">closepoll</code> acima.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.can_import_settings\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">can_import_settings</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.can_import_settings\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Um booleano que indica se o comando precisa ser capaz de importar configurações do Django; Se <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">execute()</code> irá verificar se isso é possível antes de prosseguir. O valor padrão é <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.help\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">help</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.help\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Uma breve descrição do comando, que será impresso na mensagem de ajuda quando o usuário executar o comando <code class=\"docutils literal notranslate\">python manage.py help &lt;command&gt;</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.missing_args_message\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">missing_args_message</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.missing_args_message\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>Se o seu comando define argumentos posicionais obrigatórios, você pode personalizar a mensagem de erro devolvida em caso de falta de argumentos. O padrão é a saída por <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(em Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">argparse</code></a> (“poucos argumentos”).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.option_list\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">option_list</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.option_list\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Esta é a lista de opções do <code class=\"docutils literal notranslate\">optparse</code> que serão alimentados no comando do <code class=\"docutils literal notranslate\">OptionParser</code> para análise.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Descontinuado desde a versão 1.8: </span>Deve-se agora sobrescrever o método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\">add_arguments()</code></a> para adicionar os argumentos personalizados aceitos pelo seu comando. Veja <span class=\"xref std std-ref\">o exemplo acima</span>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.output_transaction\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">output_transaction</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.output_transaction\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Um booleano que indica como os comandos retornam SQL “statements”; Se <code class=\"docutils literal notranslate\">True</code>, a saída será automaticamente envolvido com <code class=\"docutils literal notranslate\">BEGIN;</code> e <code class=\"docutils literal notranslate\">COMMIT;</code>. O valor padrão é <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.requires_system_checks\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">requires_system_checks</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.requires_system_checks\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Um booleano; Se <code class=\"docutils literal notranslate\">True</code>, todo o projeto Django será verificado sobre potenciais problemas antes de executar o comando. O valor padrão é <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.leave_locale_alone\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">leave_locale_alone</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.leave_locale_alone\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Um booleano que indica se o local definido nas configurações devem se preservado durante a execução do comando em vez de ser forçosamente definido como ‘en-us’.</p>\n<p>O valor padrão é <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Verifique se sabe o que você está fazendo se decidir mudar o valor dessa opção em seu comando personalizado se ele cria conteúdo de banco de dados que é sensível ao local e tal conteúdo não deve conter quaisquer traduções (como acontece por exemplo com permissões em django.contrib.auth) fazendo com que o o local diferente do padrão de fato ‘en-us’ pode causar efeitos indesejados. Veja a seção  <a class=\"reference internal\" href=\"#id1\">comandos de gestão e locales</a> acima para mais detalhes.</p>\n<p>Esta opção não pode ser <code class=\"docutils literal notranslate\">False</code> quando a opção <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.can_import_settings\" title=\"django.core.management.BaseCommand.can_import_settings\"><code class=\"xref py py-data docutils literal notranslate\">can_import_settings</code></a> está definido como <code class=\"docutils literal notranslate\">False</code> também porque a tentativa de definir a localidade precisa de acesso às configurações. Esta condição irá gerar um <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.style\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">style</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.style\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Um atributo de instância que ajuda a criar uma saída colorida quando se escreve no <code class=\"docutils literal notranslate\">stdout</code> ou <code class=\"docutils literal notranslate\">stderr</code>. 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=\"bp\">self</span><span class=\"o\">.</span>stdout<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>style<span class=\"o\">.</span>SUCCESS<span class=\"p\">(</span><span class=\"s1\">&#39;...&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Veja <span class=\"xref std std-ref\">sintaxe-coloring</span> para aprender como modificar a paleta de cores e ver os estilos disponíveis (use caixa-alta das versões das opções descritas nessa seção).</p>\n<p>Se você passar a opção <a class=\"reference internal\" href=\"/pt-br/1.9/ref/django-admin/#cmdoption-no-color\"><code class=\"xref std std-option docutils literal notranslate\">--no-color</code></a> ao executar o seu comando, todas as chamadas <code class=\"docutils literal notranslate\">self.style()</code> retornarão a string original sem colorir.</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<p><a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> tem alguns métodos que podem ser sobrescritos mas apenas o método <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a> deve ser implementado.</p>\n<aside class=\"admonition-implementing-a-constructor-in-a-subclass admonition\" role=\"note\">\n<p class=\"admonition-title\">Implementando um construtor em uma subclasse</p>\n<p>Se você implementar <code class=\"docutils literal notranslate\">__init__</code> em sua subclasse de <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a>, você deve chamar: o <code class=\"docutils literal notranslate\">__init__</code> do class:` BaseCommand`:</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=\"nc\">Command</span><span class=\"p\">(</span>BaseCommand<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">(</span>Command<span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.add_arguments\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">add_arguments</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">parser</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.add_arguments\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>Ponto de entrada que recebe argumentos do “parser” para manipular comandos passados pela linha de comando. Comandos personalizados devem sobrescrever este método para adicionar ambos argumentos posicionais ou opicionais que sejam aceitos pelo comando. Não é necessário chamar o <code class=\"docutils literal notranslate\">super()</code> quando for uma subclasse de  <code class=\"docutils literal notranslate\">BaseCommand</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.get_version\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">get_version</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.get_version\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna a versão do Django, que deve estar correto para todos os comandos internos do Django. É possível sobrescrever este método para que comandos fornecidos pelo usuário possam  retornar a sua própria versão.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.execute\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">execute</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.execute\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tenta executar este comando, realizando verificações de sistemas se necessário (como controlado pelo atributo <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.requires_system_checks\" title=\"django.core.management.BaseCommand.requires_system_checks\"><code class=\"xref py py-attr docutils literal notranslate\">requires_system_checks</code></a>). Se o comando gerar um <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a>, este é interceptado e impresso no stderr.</p>\n</dd></dl>\n\n<aside class=\"admonition-calling-a-management-command-in-your-code admonition\" role=\"note\">\n<p class=\"admonition-title\">Chamando um comando de gestão dentro do seu código</p>\n<p><code class=\"docutils literal notranslate\">execute()</code> não deve ser chamado diretamente do seu código para executar um comando. Ao invés disso, use <a class=\"reference internal\" href=\"/pt-br/1.9/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\">call_command()</code></a> .</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.handle\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">handle</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.handle\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A lógica real do comando. Subclasses devem implementar este método.</p>\n<p>Ele pode retornar uma string Unicode que será impresso para <code class=\"docutils literal notranslate\">stdout</code> (envolvido por <code class=\"docutils literal notranslate\">BEGIN;</code> e `` COMMIT; `` se <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.output_transaction\" title=\"django.core.management.BaseCommand.output_transaction\"><code class=\"xref py py-attr docutils literal notranslate\">output_transaction</code></a> for <code class=\"docutils literal notranslate\">True</code>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.check\">\n<span class=\"sig-prename descclassname\">BaseCommand.</span><span class=\"sig-name descname\">check</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_configs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tags<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">display_num_errors<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.check\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Usa a estrutura de verificação do sistema para inspecionar todo o projeto Django para os potenciais problemas. Graves problemas são levantados como <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\">CommandError</code></a>; avisos são enviados para stderr; notificações menos importantes são enviados para stdout.</p>\n<p>Se  ambos <code class=\"docutils literal notranslate\">app_configs</code> e  <code class=\"docutils literal notranslate\">tags</code> forem  <code class=\"docutils literal notranslate\">None</code>, todas as verificações do sistema são realizadas. `` Tags`` pode ser uma lista tags de checagem, como <code class=\"docutils literal notranslate\">compatibility</code> ou <code class=\"docutils literal notranslate\">models</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"basecommand-subclasses\">\n<span id=\"ref-basecommand-subclasses\"></span><h3>Subclasses de <code class=\"docutils literal notranslate\">BaseCommand</code><a class=\"heading-anchor\" href=\"#basecommand-subclasses\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AppCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Um comando de gestão que recebe como argumento um ou mais “labels” de aplicações instaladas, e faz alguma coisa com cada um deles.</p>\n<p>Melhor que implementar <code class=\"xref py py-meth docutils literal notranslate\">handle()</code>, as subclasses devem implementar :meth:` ~AppCommand.handle_app_config`, que será chamado uma vez para cada aplicação.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand.handle_app_config\">\n<span class=\"sig-prename descclassname\">AppCommand.</span><span class=\"sig-name descname\">handle_app_config</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_config</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand.handle_app_config\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Executar ações do comando para <code class=\"docutils literal notranslate\">app_config</code>, o qual será uma instância de <a class=\"reference internal\" href=\"/pt-br/1.9/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> correspondente a um label do aplicativo informado na linha de comando.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LabelCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Um comando de gestão que recebe um ou mais argumentos arbitrários (“labels”) na linha de comando, e faz alguma coisa com cada um deles.</p>\n<p>Em vez de implementar <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>, subclasses devem implementar <a class=\"reference internal\" href=\"#django.core.management.LabelCommand.handle_label\" title=\"django.core.management.LabelCommand.handle_label\"><code class=\"xref py py-meth docutils literal notranslate\">handle_label()</code></a>, que será chamado uma vez para cada etiqueta.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand.handle_label\">\n<span class=\"sig-prename descclassname\">LabelCommand.</span><span class=\"sig-name descname\">handle_label</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">label</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand.handle_label\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Executar ações do comando para <code class=\"docutils literal notranslate\">label</code>, que será a string como  informada na linha de comando.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.NoArgsCommand\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">NoArgsCommand</span><a class=\"heading-anchor\" href=\"#django.core.management.NoArgsCommand\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Descontinuado desde a versão 1.8: </span>Use <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\">BaseCommand</code></a> no lugar, que por padrão não tem argumentos.</p>\n</aside>\n<p>Um comando que não recebe argumentos da linha de comando</p>\n<p>Ao invés de implementar o <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a>, subclasses devem implementar <a class=\"reference internal\" href=\"#django.core.management.NoArgsCommand.handle_noargs\" title=\"django.core.management.NoArgsCommand.handle_noargs\"><code class=\"xref py py-meth docutils literal notranslate\">handle_noargs()</code></a>; <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\">handle()</code></a> que será sobrescrito para ter certeza que nenhum argumento foi passado do comando</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.NoArgsCommand.handle_noargs\">\n<span class=\"sig-prename descclassname\">NoArgsCommand.</span><span class=\"sig-name descname\">handle_noargs</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.NoArgsCommand.handle_noargs\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Executar ações deste comando</p>\n</dd></dl>\n\n</section>\n<section id=\"command-exceptions\">\n<h3>Exceções de comando<a class=\"heading-anchor\" href=\"#command-exceptions\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.CommandError\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">CommandError</span><a class=\"heading-anchor\" href=\"#django.core.management.CommandError\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>A classe de exceção indica um problema ao executar um comando de gestão.</p>\n<p>Se esta exceção é gerada durante a execução de um comando de gerenciamento chamado do console da linha de comando, ele será capturado e transformado em uma mensagem de erro devidamente impresso para a saída apropriada (isto é, stderr); como resultado, gerar essa exceção (com uma descrição sensata do erro) é a maneira preferida para indicar que algo deu errado na execução de um comando.</p>\n<p>Se um comando de gestão é chamado do código através do <a class=\"reference internal\" href=\"/pt-br/1.9/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\">call_command()</code></a>, cabe a você capturar a exceção quando necessário.</p>\n</section>\n</section>","rootId":"module-django.core.management","toc":[{"title":"Aceitando argumentos opcionais","anchor":"accepting-optional-arguments","children":[]},{"title":"Comandos de Gerenciamento e localidades","anchor":"management-commands-and-locales","children":[]},{"title":"Testando","anchor":"testing","children":[]},{"title":"Objetos Command","anchor":"command-objects","children":[{"title":"Atributos","anchor":"attributes","children":[]},{"title":"Métodos","anchor":"methods","children":[]},{"title":"Subclasses de BaseCommand","anchor":"basecommand-subclasses","children":[]},{"title":"Exceções de comando","anchor":"command-exceptions","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Guias de “como fazer”","url":"/pt-br/1.9/howto/"}],"prev":{"docname":"howto/auth-remote-user","title":"Autenticação usando REMOTE_USER","url":"/pt-br/1.9/howto/auth-remote-user/"},"next":{"docname":"howto/custom-model-fields","title":"Escrevendo campos personalizados de modelos.","url":"/pt-br/1.9/howto/custom-model-fields/"},"formats":{"html":"/pt-br/1.9/howto/custom-management-commands/","markdown":"/pt-br/1.9/howto/custom-management-commands.md","json":"/pt-br/1.9/howto/custom-management-commands.json"},"source":"https://github.com/django/django/blob/stable/1.9.x/docs/howto/custom-management-commands.txt","official":"https://docs.djangoproject.com/pt-br/1.9/howto/custom-management-commands/","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","fr","ja","id","pt-br","es"]}