Debugar aplicações django não seria tão fácil sem o debug toolbar

debug_toolbar
debug_toolbar

Demonstração do django debug toolbar

O django traz grandes facilidades, porém esconde perigos por trás dessa facilidade, e nisso está o uso excessivo de recursos por trás de toda automação que o framework proporciona, que ao invés de ajudar pode acabar atrapalhando. Entretanto para que possamos analisar os pontos fortes e fracos da nossa aplicação, precisamos de auxilio de alguma ferramenta de monitoramento e debug, e para tal tarefa temos o django debug toolbar.

Funcionamento da app

O django debug toolbar nos fornece a possibilidade de monitorar alguns recursos que são utilizados pelo django, como: tempo de utilização de cpu, versão do django, consultas sql que estão sendo executadas no banco, dentre outros. Para exibir os resultados das analises, a app exibe uma barra lateral em todas as páginas do seu projeto, no qual permite obter os dados relativo para cada página. Entretanto essa barra só é exibida enquanto a sua aplicação estiver em modo debug e para os endereços ips que forem autorizados.

Instalação e configuração

O primeiro passo é a instalação da debug toolbar, que é possível de duas formas: tanto pelo gerenciador de pacotes pip/easy_install, como baixando o pacote e instalando manualmente. Nesse exemplo optaremos por utilizar o gerenciador de pacotes para realizar a instalação.

ou utilizando o easy_install

Após realizada a instalação, precisamos apenas realizar algumas configurações para ativar o seu funcionamento e, a partir dai, consegui fazer uso dos seus recursos. No seu arquivo settings.py inclua os valores conforme demostrados abaixo:

Nesse momento daremos atenção a variável de configuração INTERNAL_IPS, essa é um configuração obrigatório para funcionamento da app, mesmo que seu projeto esteja em modo debug, se não definir os ips que serão permitido o uso da toolbar, ela não será exibido; isso porque, supondo que você possua um ambiente de homologação do seu projeto, e nesse ambiente o debug esteja ativado para facilitar o rastreamento de erros, porém esse ambiente é de acesso publico, sendo assim não há necessidade da toolbar ser exibida.

Configurações opcionais

Se você executou até os passos acima, sua debug toolbar já deve estar em funcionando perfeitamente, porém podemos customizar os recursos da ferramenta, uma configuração que costumo utilizar é, desativar a interceptação dos redirecionamentos, ou seja, a cada redirecionamento realizado, o django debug toolbar exibe uma tela intermediária onde mostra informações de debug para aquele processo, sendo necessário clicar em um botão para prosseguir com o redirecionamento.

Somente desative a interceptação dos redirecionamentos se tiver certeza que não há necessidade de monitorar os procedimentos antes de ser realizado o redirecionamento, geralmente desabilito apenas quando os redirecionamentos são realizados no painel admin.

Abaixo segue a tela de demonstração da analise dos sql que estão sendo executado na página.

Demo do analise do sql

Demo do analise do sql

O django debug toolbar não se limita apenas as opções pré configuradas em seu funcionamento, é possível ir muito além, desde profiles, até inclusão de novas extensões capazes de incrementar ainda mais a app. Para mais informações consulte o site do projeto

Ativando o painel admin do django

login_django

Quem é recém chegado no django, encontra como novidade o seu painel administrativo pronto, mesmo que o visual é um pouco ultrapassado, este é um dos recursos que eu mais gosto no framework, principalmente, devido a sua simplicidade e velocidade com que é possível fazer um crud e até lógicas mais complexas, praticamente inacreditável.

Primeiros passos

Ativar o painel admin no django é um processo bastante simples, sendo necessário apenas modificar algumas linhas de código.  Primeiramente abra o arquivo settings.py e localize a variável INSTALLED_APPS, dentro da tupla que representa seu valor, deve-se localizar a linha que contém django.contrib.admin, descomente-a  conforme exemplo logo abaixo.

Após modificado o settings.py, devemos agora modificar o arquivo urls.py e ativar o roteamento do painel adminstrativo, para isso descomente as linhas, conforme marcação abaixo.

Nesse momento já temos nossa aplicação configurada para utilizar o painel administrativo, entretanto, caso você ainda não tenha sincronizado seu banco de dados, agora é obrigatório, então rode o seguinte comando:

Será criada todas as tabelas necessárias para uso do django, também será perguntado se deseja criar um usuário administrador, é importante realizar esta operações, pois, é com ele que você acessará o painel.

Todo processo necessário para poder utilizar o painel administrativo do django já foi realizado, agora nos resta apenas testar. Rode o servidor de desenvolvimento do django.

Abra no browser o endereço http://localhost:8000/admin/ e será então apresentada a tela de login, informe o usuário e senha que você utilizou quando executou o syncdb e congratulations.

django_painel_admin

 

Alguns sites de sucesso escrito em python e django para você se inspirar

Sempre quis aprender python e django? mas nunca ouviu falar de projetos de sucesso que o utilizam? então vou listar alguns sites de sucesso que adotaram o  django e não se arrependeram.

  1. globo.com, uma das empresas brasileiras que mais aposta no django, sendo a maioria dos seus produtos desenvolvidos utilizando o framework, dentre eles destacam-se g1tvgdomingaodofaustao, caldeiraodohuck.
  2. Instagram, rede social com mais de 100 milhões de usuários, recentemente adquirida pelo facebook.
  3. Disqus,  serviço online que oferece uma plataforma centralizada de discussões e postagem de comentários para sites, bastante utilizada em blog, portais de notícias e inclusive neste blog.
  4. Pinterest, rede social de compartilhamento de fotos, que conta atualmente com mais de 25 milhões de usuários cadastrados.
  5. Bitbucket, serviço de hospedagem para projetos versionados pelo mercurial ou git, concorrente direto do github.
  6. Musio – Site de música que visa divulgar artistas independentes.

E agora, já se sente confiante para aventurar nas águas do python e django?.

Auto relacionamento no Django

Auto relacionamento é bastante comum quando necessitamos de utilizar um determinado modelo de forma recursiva, nesse caso é impossível de se criar outras tabelas, pois não sabemos exatamente o nível de profundidade no qual esse relacionamento pode chegar.

Um exemplo ideal para compreendermos a necessidade de auto relacionamento são nas lojas virtuais, onde um determinado departamento possuí varias subcategorias e essas subcategorias podem ou não possuir mais subcategorias e assim sucessivamente, nesse modelo se torna impraticável a criação de novas tabelas para representar essas subcategorias, pois não sabemos até onde podemos chegar.

Construindo auto relacionamento no django

Vamos nesse momento criar o model responsável pelo auto relacionamento :

É possível observar que o atributo parent faz um relacionamento para self, ou seja, para si mesmo, nesse momento já temos um auto relacionamento. Agora já é possível obter a categoria no qual uma subcategoria pertence, porém necessitamos também do processo inverso, onde será possível obter as subcategorias a partir de uma determinada categoria. É ai que entra em jogo o parâmetro related_name,  esse indica qual será o atributo utilizado no processo inverso de relacionamento e o seu valor representa o nome do atributo a ser utilizado na obtenção das subcategorias.