Version 7 (modified by 18 years ago) ( diff ) | ,
---|
THIS TRANSLATION IS IN PROGRESS:
This is an in progress translation document, that means there is somebody working on it. For more information on translating documents please look at TranslateDocumentation Wiki. Please do not edit this page. |
Escrevendo sua primeira aplicação Django, parte 2
Este documento cobre a versão 0.95 de Django e a versão do desenvolvimento. Docs anteriores: 0.90, 0.91
Esse tutorial começa onde o Tutorial 1 terminou. Nós vamos continuar nossa aplicação de "Questionário Web" e focar no site de administração gerado pelo Django.
Filosofia
Gerar sites de aministração para sua equipe ou clientes criar, atualizar e excluir informações é um trabalho chato e não requer muita criatividade. Por isso, Django automatiza totalmente a criação de interfaces de administração para seus models. Django foi escrito num ambie nte jornalístico, com uma clara separação entre "quem publica o conteúdo" e o "site público". Os gerenciadores do site usam o sistema para adicionar noticias, eventos, resultados esportivos, etc, e o conteúdo é mostrado no site público. Django resolve o problema de criar uma interface unificada para os administradores do site editar conteúdo.
A interface de administração não tem a intenção de ser usada pelos visitantes do site, mas sim pelos administradores do site.
Ative o site de Administração
O site de administração do Django não é ativo por padrão - é um recurso opcional. Para ativar o site de administração na sua instalação, siga esses três passos:
- Adicione django.contrib.admin em INSTALLED_APPS no seu arquivo de settings
- Execute python manage.py syncdb. Como você adicionou uma nova aplicação em INSTALLED_APPS, as tabelas do banco de dados precisam ser atualizadas.
- Edite seu arquivo mysite/urls.py e descomente a linha "Uncomment this for admin:". Esse arquivo é um URLConf; nós vamos nos aprofundar em URLConfs no próximo tutorial. Por enquanto, tudo que você precisa saber é que eles mapeiam as URLs para as aplicações.
Inicie o servidor de desenvolvimento:
Vamos iniciar o servidor de desenvolvimento e explorar o site de administração. Lembre que no Tutorial 1 você iniciou o servidor de desenvolvimento da seguinte forma:
python manage.py runserver
Abra um web browser e vá para "/admin/" no seu domínio local, ex: http://127.0.0.1:8000/admin/. Você deverá ver a seguinte tela de login:
Entre no site de administração:
Agora, tente logar. (Você criou uma conta de superusuário na primeira parte deste tutorial, lembra?!) Você deverá ver a pagina index do site de administração do Django:
Por padrão, você deverá ver dois tipos de conteúdo editavel: "groups" e "users". Esses são as principais características que o Django traz por padrão.
Fazendo a aplicação Poll acessível no admin:
Mas, onde está nossa aplicação Poll? Ela não foi mostrada no index do admin. Apenas uma coisa a fazer: nós temos que especificar no model Poll que seus objetos tem uma interface admin. Edite o arquivo mysite/polls/models.py e faça a seguinte alteração para criar uma classe interna chamada Admin:
class Poll(models.Model): # ... class Admin: pass
A classe Admin conterá todas as configurações que controlam como esse model aparece no admin. Todas as configurações são opcionais, entretanto, criando uma classe vazia significa "dê a esse objeto uma interface no admin usando todas as configurações padrão".
Agora atualize a pagina do admin para ver as mudanças. Note que você não tem que reiniciar o servidor de desenvolvimento - o servidor vai recarregar automaticamente seu projeto, então qualquer modificação no código será vista imediatamente no browser.
Explore as funcionalidades do admin:
Agora que o model Poll tem uma classe interna Admin, Django sabe que ela deve ser mostrada no index do admin.
Clique em "Polls". Agora você está na pagina "change list" de polls. Essa página mostra todos os polls no banco de dados e deixa você escolher um para altera-lo. Lá está o poll "What's up?" criado no primeiro tutorial:
Clique no poll "What's up?" para editá-lo:
Algumas coisas para se notar:
- O formulário é gerado automaticamente a partir do model Poll.
- Os diferentes tipos de campo (models.DateTimeField, models.CharField) sabem como "se mostrarem" no admin.
- Cada DateTimeField tem alguns atalhos em JavaScript. Datas tem um atalho "Today" e um calendário (em pop-up), e horários tem um atalho "Now" e um conveniente pop-up que lista horas freqüentemente usadas.
A parte de baixo da página lhe dá algumas opções:
- Save - salva as alterações e retorna para a "change list".
- Save and continue editing - salva as alterações e atualiza a pagina do admin para esse objeto.
- Save and add another - salva as alterações e carrega um novo formulário em branco para esse tipo de objeto
- Delete - mostra uma página de confirmação de deleção
Altere o campo "Date published" clicando nos atalhos "Today" e "Now". Então clique em "Save and continue editing". Agora clique em "History" na parte superior direita. Você verá uma página listando todas as alterações feitas nesse objeto através do admin, com um "timestamp" e "username" da pessoa que fez a alteração:
Personalize o formulário do admin:
Reserve alguns minutos para ser maravilhar do código que você não teve que escrever. Vamos personalizar um pouco. Nós podemos reordenar os campos adicionando um parâmetro field para a classe interna Admin:
class Admin: fields = ( (None, {'fields': ('pub_date', 'question')}), )
Isso fez com que o campo "Date published" aparecesse primeiro, ao invés de segundo.
Isso não é muito impressionante com apenas dois campos, mas para formulários com dúzias de campos, escolher uma ordem intuitiva é um grande detalhe de usabilidade. E falando em formulários com dúzias de campos, você poderia querer separar o formulário em "fieldsets":
class Admin: fields = ( (None, {'fields': ('question',)}), ('Date information', {'fields': ('pub_date',)}), )