django-admin.py e manage.py

django-admin.py é o utilitário de linha de comando do Django para tarefas administrativas.

Este documento contempla tudo que ele pode fazer.

Além disso, manage.py é automaticamente criado em cada projeto Django. O manage.py é um wrapper simples em volta do django-admin.py que se preocupa com duas coisas por você antes de delegar tarefas ao django-admin.py:

  • Ele coloca o pacote do seu projeto no sys.path.
  • Ele define a variável de ambiente DJANGO_SETTINGS_MODULE que então aponta para o arquivo settings.py do seu projeto.

O script django-admin.py deve estar no path do seu sistema se você instalou o Django via o utilitário setup.py. Se não estiver no seu path, você pode encontrá-lo dentro da sua instalação Python em site-packages/django/bin. Considere criar um link simbólico para ele no path do seu sistema, como /usr/local/bin.

Para usuários Windows, que não possuem a funcionalidade de link simbólico disponível, você pode copiar o django-admin.py para um local existente em seu path ou editar as configurações de PATH (sob Configurações - Painel de Controle - Sistema - Avançado - Ambiente...) para apontar para o local instalado.

Geralmente, quando se trabalha com um único projeto Django, é mais fácil usar o manage.py. Usar o django-admin.py com DJANGO_SETTINGS_MODULE, ou a opção de linha de comando --settings, se você precisar trocar entre vários arquivos settings do Django.

Os exemplos de linha de comando de todo este documento usa o django-admin.py para ser consistente, mas qualquer exemplo pode usar o manage.py da mesma forma.

Uso

django-admin.py <subcommand> [options]
manage.py <subcommand> [options]

subcommand deve ser um dos subcomandos listados neste documento. options, que é opcional, deve ser zero ou mais das opções disponíveis para um dado subcomando.

Obtendo ajuda em tempo de execução

--help

Execute django-admin.py help para mostrar uma lista de todos os subcomandos disponíveis. Execute django-admin.py help <subcommand> para mostrar uma descrição do subcomando em questão e uma lista de suas opções disponíveis.

App names

Muitos subcomandos recebem uma lista de "app names". Um "app name" é o nome básico do pacote contento seus models. Por exemplo, se sua INSTALLED_APPS contém a string 'mysite.blog', o app name é blog.

Determinando a versão

--version

Execute django-admin.py --version para mostra a versão atual do Django.

Exemplos de saídas:

0.95
0.96
0.97-pre-SVN-6069

Mostrando saída de debug

Use --verbosity to specify the amount of notification and debug information that django-admin.py should print to the console. For more details, see the documentation for the --verbosity option.

Subcomandos disponíveis

cleanup

django-admin.py cleanup

Pode ser executado como um cronjob ou diretamente para limpar dados antigos do banco de dados (somente sessões expiradas até o momento).

compilemessages

django-admin.py compilemessages

Compila arquivos .po criados com makemessages para arquivos .mo para uso com o suporte embutido ao gettext. Veja Internationalization and localization.

Use the --locale option to specify the locale to process. If not provided, all locales are processed.

Example usage:

django-admin.py compilemessages --locale=br_PT

createcachetable

django-admin.py createcachetable <tablename>

Cria uma tabela de cache com o nome tablename para uso com o backend de cache em banco de dados.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database onto which the cachetable will be installed.

dbshell

django-admin.py dbshell

Executa o cliente de linha de comando para o engine de banco de dados especificado em sua configuração DATABASE_ENGINE, com os paramêtros de conexão especificados em DATABASE_USER, DATABASE_PASSWORD, etc.

  • Para PostgreSQL, rodará o cliente de linha de comando psql.
  • Para MySQL, rodará o cliente de linha de comando mysql.
  • Para SQLite, rodará o cliente de linha de comando sqlite3.

Este comando assume que os programas estão no seu PATH, de modo que uma simples chamada pelo nome do programa (psql, mysql, sqlite3) encontrará o programa no lugar certo. Não há formas de especificar a localização do programa manualmente.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database onto which to open a shell.

diffsettings

django-admin.py diffsettings

Mostra diferenças entre as configurações atuais e as padrões do Django.

Configurações que não aparecem nas padrões são seguidas por "###". Por exemplo, a configuração padrão não define ROOT_URLCONF, então o ROOT_URLCONF é seguido de "###" na saída do diffsettings.

Note que as configurações padrões do Django estão em django/conf/global_settings.py, se você estiver curioso para ver a lista completa delas.

dumpdata <appname appname appname.Model ...>

django-admin.py dumpdata

Mostra na saída padrão todos os dados no banco de dados associado às aplicações listadas.

Se nenhum nome de aplicação é fornecido, todas as aplicações instaladas serão extraídas.

A saída de dumpdata pode ser usada como entrada para loaddata.

Note que dumpdata usa o manager padrão do model para selecionar os registros a serem exportados. Se você estiver usando um manager personalizado como manager padrão e ele filtra algumas entradas disponíveis, nem todos os objetos serão exportados.

Novo no Django 1.3: Please, see the release notes

The --all option may be provided to specify that dumpdata should use Django's base manager, dumping records which might otherwise be filtered or modified by a custom manager. .. django-admin-option:: --format <fmt>

By default, dumpdata will format its output in JSON, but you can use the --format option to specify another format. Currently supported formats are listed in Formatos de seriação.

--indent <num>

By default, dumpdata will output all data on a single line. This isn't easy for humans to read, so you can use the --indent option to pretty-print the output with a number of indentation spaces.

The --exclude option may be provided to prevent specific applications from being dumped.

Novo no Django 1.3: Please, see the release notes

The --exclude option may also be provided to prevent specific models (specified as in the form of appname.ModelName) from being dumped.

In addition to specifying application names, you can provide a list of individual models, in the form of appname.Model. If you specify a model name to dumpdata, the dumped output will be restricted to that model, rather than the entire application. You can also mix application names and model names.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database onto which the data will be loaded.

--natural
Novo no Django 1.2: Please, see the release notes

Use natural keys to represent any foreign key and many-to-many relationship with a model that provides a natural key definition. If you are dumping contrib.auth Permission objects or contrib.contenttypes ContentType objects, you should probably be using this flag.

flush

Retorna o banco de dados ao estado em que ele estava imediatamente após a execução do syncdb. Isto significa que todos os dados serão removidos do banco de dados, quaisquer manipuladores de sincronização posterior, serão re-executados, e o fixture initial_data será reinstalado.

The --noinput option may be provided to suppress all user prompts.

Novo no Django 1.2: Please, see the release notes

The --database option may be used to specify the database to flush.

inspectdb

django-admin.py inspectdb

Faz introspecção nas tabelas do banco de dados apontado pela configuração DATABASE_NAME e mostra um módulo de model do Django (um arquivo models.py) na saída padrão.

Use isso se você tem um banco de dados legado com o qual você gostaria de usar o Django. O script irá inspecionar o banco de dados e criar um model para cada tabela dentro dele.

Como você pode esperar, os models criados terão um atributo para todos os campos da tabela. Note que inspectdb tem uns poucos casos especiais em sua saída de nomes de campos:

  • Se inspectdb não mapear um tipo de coluna para o tipo de campo do model, ele usará um TextField e inserirá um comentário Python 'This field type is a guess' (traduzindo, 'Este tipo de campo é uma advinhação'.) próximo ao campo gerado no model.
  • Se o nome da coluna do banco de dados é uma palavra reservada do Python (tipo 'pass', 'class' ou 'for'), o inspectdb adicionará '_field' ao nome do atributo. Por exemplo, se uma tabela tem uma coluna 'for', o model gerado terá um campo 'for_field', com o atributo db_column setado para 'for'. O inspectdb inserirá o comentário Python 'Field renamed because it was a Python reserved word' (traduzindo, 'Campo renomeado porque é uma palavra reservada do Python') próximo ao campo.

Esta funcionalidade é para ser um atalho, não um gerador de models definitivo. Depois que você rodá-la, você precisará mexer nos models para personalizá-lo. Em particular, você precisará reorganizar a ordem dos models, desta forma os models que são referenciados por outros, funcionarão apropriadamente.

Chaves primárias são automaticamente introspectadas no PostgreSQL, MySQL e SQLite, nestes casos o Django coloca primary_key=True onde for necessário.

O inspectedb trabalha com PostgreSQL, MySQL e SQLite. Detecção de chaves estrangeiras somente funcionam no PostgreSQL e com certos tipos de tabelas do MySQL.

Novo no Django 1.2: Please, see the release notes

The --database option may be used to specify the database to introspect.

loaddata <fixture fixture ...>

django-admin.py loaddata

Procura e carrega os conteúdos de fixtures para dentro do banco de dados.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database onto which the data will be loaded.

What's a "fixture"?

Um fixture é uma coleção de arquivos que contém os conteúdos serializados do banco de dados. Cada fixture tem um nome único, e os arquivos que compreendem aos fixtures podem estar distribuídos em vários diretórios, em várias aplicações.

O Django procurará em três lugares por fixtures:

  1. No diretório fixtures de cada aplicação instalada
  2. Em qualquer diretório encontrado na configuração FIXTURE_DIRS
  3. No caminho literal nomeado para o fixture

O Django carregará qualquer e todos os fixtures que encontrar, nos lugares que combinarem com os nomes de fixtures fornecidos.

Se o fixture nomeado tem uma extensão de arquivo, somente fixtures daquele tipo serão carregados. Por exemplo:

django-admin.py loaddata mydata.json

poderia somente carregar fixtures JSON chamados mydata. A extensão do fixture deve corresponder ao nome registrado do serializador (e.g., json ou xml).

Se você omitir a extensão, o Django procurará todos os tipos de fixtures disponíveis até encontrar uma combinação. Por exemplo:

django-admin.py loaddata mydata

poderia procurar por qualquer fixture de qualquer tipo chamado mydata. Se um diretório de fixture contendo mydata.json, cujo a fixture poderia ser carregada como uma fixture JSON. Entretanto, se duas fixtures com o mesmo nome mas tipos diferentes forem descobertas (por exemplo, se mydata.json e mydata.xml fossem encontradas em algum diretório de fixtures), a instalação do fixtures será abortada, e qualquer dado instalado na chamada do loaddata será removido do banco de dados.

Os fixtures que são nomeados podem incluir componentes de diretório. Estes diretórios serão incluídos no caminho de busca. Por exemplo:

django-admin.py loaddata foo/bar/mydata.json

poderia procurar <appname>/fixtures/foo/bar/mydata.json para cada aplicação instalada, <dirname>/foo/bar/mydata.json para cada diretório no FIXTURE_DIRS, e o caminho literal foo/bar/mydata.json.

Quando arquivos fixture são processados, os dados são salvos no banco de dados como estão. O método save do model definido e o sinal pre_save não são chamados.

Note que a ordem em que os arquivos de fixtures são processados é indefinida. Entretanto, todos os dados são instalados como uma transação única, então, dados de uma fixture podem referenciar dados de outra fixture. Se o backend de banco de dados suporta constraints a nível de linha, estes constraints serão checados no final da transação.

O comando dumbdata pode ser usado para gerar entrada para loaddata.

Compressed fixtures

Fixtures may be compressed in zip, gz, or bz2 format. For example:

django-admin.py loaddata mydata.json

would look for any of mydata.json, mydata.json.zip, mydata.json.gz, or mydata.json.bz2. The first file contained within a zip-compressed archive is used.

Note that if two fixtures with the same name but different fixture type are discovered (for example, if mydata.json and mydata.xml.gz were found in the same fixture directory), fixture installation will be aborted, and any data installed in the call to loaddata will be removed from the database.

MySQL e Fixtures

Infelizmente, o MySQL não é capaz de suportar completamente todas as funcionalidades dos fixtures do Django. Se você usa tabelas MyISAM, o MySQL não suporta transações ou constraints, então você não pode fazer um rollback se vários arquivos de transação são encontrados, ou fixtures com dados de validação.Se você usa tabelas InnoDB, você não poderá ter qualquer referência nos seus arquivos de dados - o MySQL não provê um mecanismo para diferir checagens de constraints de linhas até que uma transação seja comitada.

Database-specific fixtures

If you are in a multi-database setup, you may have fixture data that you want to load onto one database, but not onto another. In this situation, you can add database identifier into . If your DATABASES setting has a 'master' database defined, you can define the fixture mydata.master.json or mydata.master.json.gz. This fixture will only be loaded if you have specified that you want to load data onto the master database.

makemessages

django-admin.py makemessages

Executa sobre toda árvore de código do diretório atual e extrai todas as strings marcadas para tradução. Ele cria (ou atualiza) um arquivo de mensagem em conf/locale (na árvore do django) ou um diretório locale (para o projeto e aplicação). Depois de fazer as mudanças nos arquivos de mensagens você precisará compilá-los com compilemessages para usar com o suporte ao gettext embutido. Veja a documentação i18n para detalhes.

--all

Use as opções --all ou -a para atualizar os arquivos de mensagens para todas os idiomas disponíveis.

Exemplo de uso:

django-admin.py makemessages --all
--extension

Use as opções --extension ou -e para especificar uma lista de extensões de arquivos para examinar (padrão: ".html").

Exemplo de uso:

django-admin.py makemessages --locale=de --extension xhtml

Separe as várias extensões com vírgulas ou usando -e ou --extension várias vezes:

django-admin.py makemessages --locale=de --extension=html,txt --extension xml

Use the --locale option para especificar o locale a ser processado.

Exemplo de uso:

django-admin.py makemessages --locale=pt_BR
--domain

Use as opções --domain ou -d para mudar o domínio dos arquivos de mensagens. Atualmente são suportados:

  • django para todo arquivo *.py e *.html (padrão)
  • djangojs para arquivos *.js
Novo no Django 1.2: Please, see the release notes

Use the --symlinks or -s option to follow symlinks to directories when looking for new translation strings.

Example usage:

django-admin.py makemessages --locale=de --symlinks
--ignore

Use the --ignore or -i option to ignore files or directories matching the given glob-style pattern. Use multiple times to ignore more.

These patterns are used by default: 'CVS', '.*', '*~'

Example usage:

django-admin.py makemessages --locale=en_US --ignore=apps/* --ignore=secret/*.html
--no-default-ignore

Use the --no-default-ignore option to disable the default values of --ignore.

--no-wrap
Novo no Django 1.3: Please, see the release notes

Use the --no-wrap option to disable breaking long message lines into several lines in language files.

reset <appname appname ...>

Tornado obsoleto no Django 1.3: This command has been deprecated. The flush can be used to delete everything. You can also use ALTER TABLE or DROP TABLE statements manually.
django-admin.py reset

Executa o equivalente a sqlreset para uma app específica.

The --noinput option may be provided to suppress all user prompts.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the alias of the database to reset.

runfcgi [options]

django-admin.py runfcgi

Inicia um conjunto de processos FastCGI adequados para uso com qualquer servidor Web que suporta o protocolo FastCGI. Veja a documentação de implantação no FastCGI para detalhes. Requer o módulo FastCGI do Python flup.

The options accepted by this command are passed to the FastCGI library and don't use the '--' prefix as is usual for other Django management commands.

protocol

protocol=PROTOCOL

Protocol to use. PROTOCOL can be fcgi, scgi, ajp, etc. (default is fcgi)

host

host=HOSTNAME

Hostname to listen on.

port

port=PORTNUM

Port to listen on.

socket

socket=FILE

UNIX socket to listen on.

method

method=IMPL

Possible values: prefork or threaded (default prefork)

maxrequests

maxrequests=NUMBER

Number of requests a child handles before it is killed and a new child is forked (0 means no limit).

maxspare

maxspare=NUMBER

Max number of spare processes / threads.

minspare

minspare=NUMBER

Min number of spare processes / threads.

maxchildren

maxchildren=NUMBER

Hard limit number of processes / threads.

daemonize

daemonize=BOOL

Whether to detach from terminal.

pidfile

pidfile=FILE

Write the spawned process-id to file FILE.

workdir

workdir=DIRECTORY

Change to directory DIRECTORY when daemonizing.

debug

debug=BOOL

Set to true to enable flup tracebacks.

outlog

outlog=FILE

Write stdout to the FILE file.

errlog

errlog=FILE

Write stderr to the FILE file.

umask

umask=UMASK

Umask to use when daemonizing. The value is interpeted as an octal number (default value is 022).

Example usage:

django-admin.py runfcgi socket=/tmp/fcgi.sock method=prefork daemonize=true \
    pidfile=/var/run/django-fcgi.pid

Run a FastCGI server as a daemon and write the spawned PID in a file.

runserver [port or address:port]

django-admin.py runserver [port or ipaddr:port]

Inicia um servidor Web leve de desenvolvimento na máquina local. Por padrão, o servidor roda na porta 8000 no endereço IP 127.0.0.1. Você pode passar um endereço IP e uma porta explicitamente.

Se você executar este script como um usuário com privilégios normais (recomendado), você pode não ter permissão para poder iniciar o servidor numa porta de número baixo. Portas de números baixos são reservadas ao super-usuário (root).

NÃO USE ESTE SERVIDOR EM AMBIENTE DE PRODUÇÃO. Ele não passou por auditorias de segurança ou testes de desempenho. (E isso vai ficar como está. Nosso negócio é fazer um framework Web, não servidores Web, portanto, improvisar este servidor para torná-lo usável em ambiente de produção está fora do escopo do Django.)

O servidor de desenvolvimento recarrega o código Python a cada request, se necessário. Você não precisa reiniciá-lo para que mudanças no código tenham efeito.

Quando iniciar o servidor, a cada vez que você mudar o código Python enquanto ele estiver rodando, o servidor validará todos os seus models instalados. (Veja o comando validate abaixo.) Se o validador encontrar erros, ele os imprimirá na saída padrão, mas não parará o servidor.

Você pode rodar quantos servidores você quiser, desde que estejam em portas separadas. É só executar django-admin.py runserver mais de uma vez.

Note que o endereço IP padrão, 127.0.0.1, não é acessível para outros computadores de sua rede. Para ter seu servidor de desenvolvimento visível por outros na rede, use seu próprio endereço IP (e.g. 192.168.2.1) ou 0.0.0.0 or :: (with IPv6 enabled).

Alterado no Django 1.3: Please, see the release notes

You can provide an IPv6 address surrounded by brackets (e.g. [200a::1]:8000). This will automatically enable IPv6 support.

A hostname containing ASCII-only characters can also be used.

--adminmedia

Use a opção --adminmedia para dizer ao Django onde encontrar os vários arquivos CSS e JavaScript da interface de administração do Django. Normalmente, o servidor de desenvolvimento serve estes arquivos da árvore de código do Django magicamente, mas você pode querer usar isso, caso tenha feito quaisquer mudanças nos arquivos para seu próprio site.

Exemplo de uso:

django-admin.py runserver --adminmedia=/tmp/new-admin-style/
Alterado no Django 1.3: Please, see the release notes

If the staticfiles contrib app is enabled (default in new projects) the runserver command will be overriden with an own runserver command which doesn't have the --adminmedia option due to deprecation.

--noreload

Use a opção --noreload para desabilitar o uso do auto-reloader. Isso significa que quaisquer mudanças no código Python, feitas enquanto o servidor estiver rodando, não terá efeito se o módulo em particular já foi carregado na memória.

Exemplo de uso:

django-admin.py runserver --noreload
--ipv6, -6
Novo no Django 1.3: Please, see the release notes

Use the --ipv6 (or shorter -6) option to tell Django to use IPv6 for the development server. This changes the default IP address from 127.0.0.1 to ::1.

Example usage:

django-admin.py runserver --ipv6

Exemplos de uso com diferentes portas e endereços

Porta 8000 no endereço IP 127.0.0.1:

django-admin.py runserver

Porta 8000 no endereço IP 1.2.3.4:

django-admin.py runserver 1.2.3.4:8000

Porta 7000 no endereço IP 127.0.0.1:

django-admin.py runserver 7000

Porta 7000 no endereço IP 1.2.3.4:

django-admin.py runserver 1.2.3.4:7000

Port 8000 on IPv6 address ::1:

django-admin.py runserver -6

Port 7000 on IPv6 address ::1:

django-admin.py runserver -6 7000

Port 7000 on IPv6 address 2001:0db8:1234:5678::9:

django-admin.py runserver [2001:0db8:1234:5678::9]:7000

Port 8000 on IPv4 address of host localhost:

django-admin.py runserver localhost:8000

Port 8000 on IPv6 address of host localhost:

django-admin.py runserver -6 localhost:8000

Servindo arquivos estáticos com o servidor de desenvolvimento

Por padrão, o servidor de desenvolvimento não serve quaisquer arquivos estáticos para o site (como arquivos CSS, imagens, coisas sob o MEDIA_URL, etc). Se você deseja configurar o Django para servir arquivos de mídia estáticos, leia Managing static files.

shell

django-admin.py shell

Começa o interpretador Python interativo.

O Django usará o IPython ou bpython, se um deles estiver instalado. Se você tem o IPython instalado e quer forçar o uso do interpretador Python "plano", use a opção --plain, desta forma:

django-admin.py shell --plain

sql <appname appname ...>

django-admin.py sql

Imprime a consulta SQL CREATE TABLE para as app name fornecidas.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlall <appname appname ...>

django-admin.py sqlall

Imprime as consultas SQL CREATE TABLE e initial-data, para as app name fornecidas.

Leia a descrição de sqlcustom para uma explicação de como especificar dados iniciais.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlclear <appname appname ...>

django-admin.py sqlclear

Imprime a consulta SQL DROP TABLE para as app name fornecidas.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlcustom <appname appname ...>

django-admin.py sqlcustom

Imprime a consulta SQL para as app name fornecidas.

Para cada model em cada app especificada, este comando procura pelo arquivo <appname>/sql/<modelname>.sql, onde <appname> é o nome dado da aplicação <modelname> é o nome do model em minúsculo. Por exemplo, se você tem uma app news que inclui um model Story, o sqlcustom tentará ler o arquivo news/sql/story.sql e irá adicionar à saída deste comando.

Cada arquivo SQL, se fornecido, é esperado que contenha SQL válido. Os arquivos SQL são entubados diretamente dentro do banco de dados depois que todos as consultas de criação de tabelas foram executadas. Use este hook SQL para fazer quaisquer modificações em tabelas, ou inserir qualquer função SQL dentro do banco de dados.

Note que a ordem em que os arquivos SQL são processados é indefinida.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlflush

django-admin.py sqlflush

Imprime a instrução SQL que será executada pelo comando flush.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlindexes <appname appname ...>

django-admin.py sqlindexes

Imprime a instrução SQL CREATE INDEX SQL para as app name fornecidas.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlreset <appname appname ...>

Tornado obsoleto no Django 1.3: This command has been deprecated. The sqlflush can be used to delete everything. You can also use ALTER TABLE or DROP TABLE statements manually.
django-admin.py sqlreset
Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

sqlsequencereset <appname appname ...>

django-admin.py sqlsequencereset

Imprime as instruções SQL para resetar as seqüencias das app name fornecidas.

Seqüências são índices usados por alguns bancos de dados para rastrear o próximo número disponível automaticamente, em campos incrementais.

Use este comando para gerar SQL que consertará casos em que uma sequência está fora de sincronia com seus dados de campos automaticamente incrementados.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database for which to print the SQL.

startapp <appname>

django-admin.py startapp

Cria uma estrutura de diretório de aplicação Django com o nome fornecido, no diretório corrente.

startproject <projectname>

django-admin.py startproject

Cria uma estrutura de diretório de projeto Django com o nome fornecido, no diretório corrente.

Este comando é desabilitado quando a opção --settings para o django-admin.py é usado, ou quando a variável de ambiente DJANGO_SETTINGS_MODULE estiver definida. Para rehabilitá-lo nestas situações, deve-se omitir a opção --settings ou anular o DJANGO_SETTINGS_MODULE.

syncdb

django-admin.py syncdb

Cria as tabelas do banco de dados para todas as aplicações em INSTALLED_APPS cujo as tabelas ainda não foram criadas.

Use este comando quando você tiver adicionado novas aplicações ao seu projeto e quer instalá-las no banco de dados. Isso inclui quaisquer aplicações entregues com o Django, que podem estar no INSTALLED_APPS por padrão. Quando você iniciar um novo projeto, execute este comando para instalar as aplicações padrão.

syncdb não altera tabelas existentes

syncdb somente criará tabelas para os models que não foram instalados ainda. Ele nunca emite uma consulta ALTER TABLE para combinar mudanças feitas na classe do model depois da instalação. Mudanças de models e esquemas de banco de dados normalmente envolvem alguma forma de ambiguidade e, em alguns casos, o Django não adivinhará quais as mudanças corretas fazer. Há um risco de que dados críticos poderiam ser perdidos no processo.

Se você tem feito mudanças em models e deseja alterar as tabelas do banco de dados, use o comando sql para mostrar a nova estrutura do SQL e compare-a com o seu esquema de tabelas atual, para fazer as mudanças.

Se você estiver instalando a aplicação django.contrib.auth, o syncdb dará a você a opção de criar um superusuário imediatamente.

O syncdb também procurará por, e instalará, qualquer fixture chamada initial_data com uma extenção apropriada (e.g. json ou xml). Veja a documentação para loaddata para detalhes sobre a especificação de arquivos de dados de fixture.

The --noinput option may be provided to suppress all user prompts.

Novo no Django 1.2: Please, see the release notes

The --database option can be used to specify the database to synchronize.

test <app or test identifier>

django-admin.py test

Executa os testes para todos os models instalados. Veja Testando aplicações Django para mais informações.

Novo no Django 1.2: Please, see the release notes
--failfast

Use the --failfast option to stop running tests and report the failure immediately after a test fails.

testserver <fixture fixture ...>

django-admin.py testserver

Executa um servidor de desenvolvimento Django (como no runserver) usando dados de fixture(s) fornecida(s).

Por exemplo, este comando:

django-admin.py testserver mydata.json

...executaria os seguintes passos:

  1. Cria um banco de dados de teste, como descrito em Testando aplicações Django.
  2. Popula o banco de dados de teste com os dados das fixtures. (Para saber mais sobre fixtures, veja a documentação para loaddata acima.)
  3. Executa o servidor de desenvolvimento do Django (como no runserver), apontando para este novo banco de dados criado, ao invés do seu banco de dados de produção.

Isso é útil de diversas formas:

  • Quando você estiver escrevendo unit tests de como seus views agem com certos dados de fixture, você pode usar testserver para interagir com os views no navegador Web, manualmente.
  • Vamos dizer que você está desenvolvendo sua aplicação Django e tem uma cópia antiga do banco de dados com a qual você gostaria de interagir. Você pode extrair seu banco de dados para uma fixture (usando o comando dumpdata, explicado acima), e então usar testserver para rodar sua aplicação Web com estes dados. Com este arranjo, você tem a flexibilidade de interagir com seus dados de qualquer forma, sabendo que qualquer dado alterado está tendo efeito somente no seu banco de dados de teste.

Note que este servidor não detecta automaticamente mudanças no seu código Python (como runserver faz). Ele, no entanto, detecta mudanças nos seus templates.

--addrport [port number or ipaddr:port]

Use --addrport para especificar uma porta diferente, ou endereço de IP e porta, no padrão 127.0.0.1:8000. Este valor segue exatamente o mesmo formato e exerce a mesma função do argumento para o subcomando runserver.

Exemplos:

Para rodar o servidor de test na porta 7000 com o fixture1 e fixture2:

django-admin.py testserver --addrport 7000 fixture1 fixture2
django-admin.py testserver fixture1 fixture2 --addrport 7000

(As regras acima são equivalente. Nós incluímos ambas para demonstrar que não importa se as opções vem antes ou depois dos argumentos de fixture.)

Para rodar sobre 1.2.3.4:7000 um fixture test:

django-admin.py testserver --addrport 1.2.3.4:7000 test
Novo no Django 1.3: Please, see the release notes

The --noinput option may be provided to suppress all user prompts.

validate

django-admin.py validate

Valida todos os models instalados (de acordo com a configuração INSTALLED_APPS) e imprime erros de validação na saída padrão.

Commands provided by applications

Some commands are only available when the django.contrib application that implements them has been enabled. This section describes them grouped by their application.

django.contrib.auth

changepassword

django-admin.py changepassword
Novo no Django 1.2: Please, see the release notes

This command is only available if Django's authentication system (django.contrib.auth) is installed.

Allows changing a user's password. It prompts you to enter twice the password of the user given as parameter. If they both match, the new password will be changed immediately. If you do not supply a user, the command will attempt to change the password whose username matches the current user.

Example usage:

django-admin.py changepassword ringo

createsuperuser

django-admin.py createsuperuser

Este comando estará disponível somente se o sistema de autenticação do Django (django.contrib.auth) estiver instalado.

Cria uma conta de superusuário (um usuário que tem todas as permissões). Isso é útil se você precisa criar uma conta inicial de superusuário, mas não o fez durante o syncdb, ou se você precisa programaticamente gerar contas de superusuário para seu(s) site(s).

Quando executar interativamente, este comando pedirá uma senha para a nova conta de super usuário. Quando executá-lo de forma não interativa, nenhuma senha será definida, e a conta de superusuário não será hábil a logar-se até que uma senha seja manualmente definida para ele.

--username
--email

O nome de usuário e endereço de e-mail para a nova conta podem ser fornecidos usando os argumentos --username e --email na linha de comando. Se algum deles não forem fornecidos, createsuperuser pedirá por eles quando estiver rodando interativamente.

django.contrib.gis

ogrinspect

This command is only available if GeoDjango (django.contrib.gis) is installed.

Please refer to its description in the GeoDjango documentation.

django.contrib.sitemaps

ping_google

This command is only available if the Sitemaps framework (django.contrib.sitemaps) is installed.

Please refer to its description in the Sitemaps documentation.

django.contrib.staticfiles

collectstatic

This command is only available if the static files application (django.contrib.staticfiles) is installed.

Please refer to its description in the staticfiles documentation.

findstatic

This command is only available if the static files application (django.contrib.staticfiles) is installed.

Please refer to its description in the staticfiles documentation.

Opções padrão

Embora alguns subcomandos possam permitir suas próprias opções personalizadas, todo subcomando permite as seguintes opções:

--pythonpath

Exemplo de uso:

django-admin.py syncdb --pythonpath='/home/djangoprojects/myproject'

Adiciona o caminho do sistema de arquivos para o caminho de busca do Python. Se este não for fornecido, o django-admin.py usará a variável de ambiente PYTHONPATH.

Note que esta opção é desnecessária para o manage.py, pois ele se preocupa em definir o caminho do Python por você.

--settings

Exemplo de uso:

django-admin.py syncdb --settings=mysite.settings

Explicitamente especifica o módulo settings a se usar. O módulo settings deve estar na sintaxe de pacotes Python, e.g. mysite.settings. Se este não for fornecido, django-admin.py usará a variável de ambiente DJANGO_SETTINGS_MODULE.

Note que esta opção é desnecessária no manage.py, pois ele usa o settings.py do projeto atual por padrão.

--traceback

Exemplo de uso:

django-admin.py syncdb --traceback

Por padrão, django-admin.py mostrará uma mensagem de erro simples sempre que um erro ocorrer. Se você especificar --traceback, o django-admin.py mostrará uma pilha completa sempre que uma exceção for lançada.

--verbosity

Example usage:

django-admin.py syncdb --verbosity 2

Use --verbosity to specify the amount of notification and debug information that django-admin.py should print to the console.

  • 0 means no output.
  • 1 means normal output (default).
  • 2 means verbose output.
  • 3 means very verbose output.

Common options

The following options are not available on every commands, but they are common to a number of commands.

--database
Novo no Django 1.2: Please, see the release notes

Used to specify the database on which a command will operate. If not specified, this option will default to an alias of default.

For example, to dump data from the database with the alias master:

django-admin.py dumpdata --database=master
--exclude

Exclude a specific application from the applications whose contents is output. For example, to specifically exclude the auth application from the output of dumpdata, you would call:

django-admin.py dumpdata --exclude=auth

If you want to exclude multiple applications, use multiple --exclude directives:

django-admin.py dumpdata --exclude=auth --exclude=contenttypes
--locale

Use the --locale or -l option to specify the locale to process. If not provided all locales are processed.

--noinput

Use the --noinput option to suppress all user prompting, such as "Are you sure?" confirmation messages. This is useful if django-admin.py is being executed as an unattended, automated script.

Sutilezas extra

Sintaxe colorida

Os comandos django-admin.py / manage.py que mostram SQL na saída padrão usarão uma saída de código colorida se seu terminal suporta saída ANSI-colored. Ele não usa os códigos de cor se você estiver tunelando comandos para um outro programa.

The colors used for syntax highlighting can be customized. Django ships with three color palettes:

  • dark, suited to terminals that show white text on a black background. This is the default palette.
  • light, suited to terminals that show black text on a white background.
  • nocolor, which disables syntax highlighting.

You select a palette by setting a DJANGO_COLORS environment variable to specify the palette you want to use. For example, to specify the light palette under a Unix or OS/X BASH shell, you would run the following at a command prompt:

export DJANGO_COLORS="light"

You can also customize the colors that are used. Django specifies a number of roles in which color is used:

  • error - A major error.
  • notice - A minor error.
  • sql_field - The name of a model field in SQL.
  • sql_coltype - The type of a model field in SQL.
  • sql_keyword - A SQL keyword.
  • sql_table - The name of a model in SQL.
  • http_info - A 1XX HTTP Informational server response.
  • http_success - A 2XX HTTP Success server response.
  • http_not_modified - A 304 HTTP Not Modified server response.
  • http_redirect - A 3XX HTTP Redirect server response other than 304.
  • http_not_found - A 404 HTTP Not Found server response.
  • http_bad_request - A 4XX HTTP Bad Request server response other than 404.
  • http_server_error - A 5XX HTTP Server Error response.

Each of these roles can be assigned a specific foreground and background color, from the following list:

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white

Each of these colors can then be modified by using the following display options:

  • bold
  • underscore
  • blink
  • reverse
  • conceal

A color specification follows one of the following patterns:

  • role=fg
  • role=fg/bg
  • role=fg,option,option
  • role=fg/bg,option,option

where role is the name of a valid color role, fg is the foreground color, bg is the background color and each option is one of the color modifying options. Multiple color specifications are then separated by semicolon. For example:

export DJANGO_COLORS="error=yellow/blue,blink;notice=magenta"

would specify that errors be displayed using blinking yellow on blue, and notices displayed using magenta. All other color roles would be left uncolored.

Colors can also be specified by extending a base palette. If you put a palette name in a color specification, all the colors implied by that palette will be loaded. So:

export DJANGO_COLORS="light;error=yellow/blue,blink;notice=magenta"

would specify the use of all the colors in the light color palette, except for the colors for errors and notices which would be overridden as specified.

Bash completion

Se você usa o terminal Bash, considere instalar o script de Bash completion do Django, que reside em extras/django_bash_completion na distribuição do Django. Ele habilita o auto completar com tab dos comandos django-admin.py e manage.py, então você pode, por instância...

  • Escrever django-admin.py.
  • Precionar [TAB] para ver todas as opções disponíveis.
  • Escrever sql, então [TAB], para ver todas as opções disponíveis cujo nome começa com sql.

Veja Escrevendo commando customizados para o django-admin para saber como adicionar ações personalizadas.

Running management commands from your code

django.core.management.call_command(name, *args, **options)

To call a management command from code use call_command.

name
the name of the command to call.
*args
a list of arguments accepted by the command.
**options
named options accepted on the command-line.

Examples:

from django.core import management
management.call_command('flush', verbosity=0, interactive=False)
management.call_command('loaddata', 'test_data', verbosity=0)