Conheça o Django 3
Hoje temos uma safra de exelentes frameworks que pregam o desenvolvimento rápido de aplicações para Web. Em se falando de Python, o framework que mais se destaca com certeza é o Django.
Python
Para quem não sabe, Python é uma linguagem de proposito geral de alto nível, orientada a objetos. Sua tipagem é forte e dinâmica, a sintaxe da linguagem foi projetada com ênfase na legibilidade do código. Possui uma baixa curva de aprendizado. Python é interpretada e é suportada por diversos sistemas operacionais (Windows, Linux, Mac OS, …) e diferentes plataformas como Java e .Net.
Django - O Framework
O Django é um framework web, open-source escrito em Python que segue o padrão de arquitetura MVC. Ele nos ajuda a desenvolver aplicações web de forma rápida e com modelagem limpa e pragmática. Seu nome foi inspirado no nome de um guitarrista de jazz chamado Django Reinhardt. Django.
O framework nos oferece recursos como os listados abaixo, dos quais alguns serão abordados neste tutorial:
-
Mapeamento Objeto Relacional.
-
Interface Automática de Administração de conteúdo
-
Configurações de URLs elegantes
-
Sistema de Template
-
Internacionalização
Instalando o Python e o Django
Neste turorial utilizaremos a versão 2.5.2 do Python e a versão 1.0 do Django. Para ter acesso as instruções de instalação do Python e do Django acesse: http://docs.djangoproject.com/en/dev/intro/install/
É um passo a passo completo com todos os procedimentos necessários para poder desenvolver aplicações com Django.
Criando um projeto
Para criar um projeto do Django acesse a linha de comando do seu sistema operacional, entre no diretório onde você gostaria de armazenar o projeto e rode o comando:
django-admin.py startproject nome_do_projeto
O comando acima cria um diretório com o nome do projeto e arquivos que compõem a estrutura básica para um projeto feito em Django.
nome_do_projeto/
__init__.py
manage.py
settings.py
urls.py
Os arquivos gerados têm as seguintes finalidades:
-
__init__.py
-
Um arquivo vazio que diz ao interpretador do Python que esse diretório é um pacote (como um pacote em java, Leia mais sobre pacotes em Python).
-
-
manage.py
-
Um pequeno programa escrito em python que permite realizar operações com o nosso projeto Django.
-
-
urls.py
-
Um arquivo que contém mapeamentos das URLs do projeto. Nele podemos dizer quais URLs serão tratadas por quais métodos.
-
-
settings.py
-
Um arquivo que contém as configurações básicas de um projeto Django.
-
O servidor de desenvolvimento
O framework vem com um servidor de desenvolvimento que usaremos para rodar a nossa aplicação enquanto ainda ela ainda não está em produção. Para subir o servidor, rode o seguinte comando no diretório do projeto:
python manage.py runserver
No seu browser acesse a URL http://localhost:8000 e verifique que o servidor subiu com sucesso.
Por padrão o servidor escuta a porta 8000 mas você pode muda-la facilmente passando outra porta, por exemplo a porta 80, por parâmetro ao rodar o comando:
python manage.py runserver 80
Configurando o projeto
Como foi dito acima o arquivo settings.py contém as configurações básicas de um projeto Django. Para fazermos o nosso exemplo só precisamos configurar o acesso ao banco de dados. Adiante adicionaremos algumas outras configurações pertinentes aos assuntos tratados.
O python 2.5.2 já vem com um banco de dados embarcado chamado SQLite. É um recurso muio interessante que aumenta a portabilidade de softwares escritos em python. No nosso caso vai nos poupar algumas configurações.
Para ter a nossa aplicação rodando com o SQLite, basta dizer o SGBD e o caminho do arquivo que vai armazenar os nossos dados no arquivo settings.py.

Agora que as configurações mínimas do projeto foram satisfeitas vamos iniciar a nossa aplicação.
A aplicação
A aplicação deste tutorial consiste em um simples sistema de controle de bandas. Vale ressaltar que no contexto do Django uma aplicação é um sistema web que faz algo específico (controle de nóticias, enquetes, etc…). Um projeto é um conjunto de aplicações e configurações para um Web site em particular. Um projeto pode conter várias aplicações e uma aplicação pode estar em vários projetos. A idéia é que possamos empacotar e distribuir aplicações para uso em diferentes projetos.
O nosso projeto já foi criado, agora precisamos criar a nossa aplicação. Para isso rode o comando abaixo a partir do diretório do nosso projeto:
python manage.py startapp bandas
Similar ao startproject, o comando startapp cria um diretório com o nome da aplicação e cria os seguintes arquivos:
bandarchive/
__init__.py
models.py
views.py
-
__init__.py
-
Como foi explicado anteriormente, o arquivo __init__.py serve para informar que este diretório é um pacote.
-
-
models.py
-
O arquivo models.py irá conter os modelos da nossa aplicação. Modelos são classes que representam o domínio do sistema.
-
-
views.py
-
O arquivo views.py irá conter os métodos que realizam operações quando uma determinada url for acessada (salvar/deletar banda, votar em uma musica, etc).
-
Os modelos da aplicação
A aplicação de bandas terá 2 modelos, Banda que ira representar bandas, cantores, e Album que representa os lançamentos daquela banda. Os modelos são subclasses de Models, uma classe do Django que nos auxilia a realizar operações em bancos de dados (Mapeamento objeto relacional ou ORM) sem utilizar SQL.

Na imagem acima temos os dois modelos que iremos utilizar. Cada subclasse de Model tera uma tabela e cada atributo se transformará em uma coluna daquela tabela que será do mesmo tipo usado para inicializar o atributo.
Depois de criar nossos modelos devemos adicionar a aplicação à configuração do projeto no arquivo settings.py para que ela seja enxergada pelo nosso projeto.

Feito isso, rodamos o comando syncdb na linha de comando para que as tabelas sejam criadas no nosso banco de dados.
python manage.py syncdb
Podemos brincar com a API de banco de dados do Django e aproveitamos para popular o banco com dados para os próximos passos deste documento. Faremos isso pelo próprio interpretador do python, chamando pelo manage.py que sobe o contexto do projeto todo para nós.
python manage.py shell

Pronto, agora estamos prontos para escrever as funcionalidades de verdade!
Views – Processando requisições
Para o Django, uma view é uma função que processa a requisição de um padrão de url previamente mapeado, gerando uma resposta. Para quem programa em java ela seria correspondente a uma servlet ou comparando com outros frameworks seria algo como uma action.
Vamos começar mapeando as URLs e as views que irão processar uma requisição específica no arquivo urls.py na pasta do projeto.

As views devem ficar no arquivo views.py da pasta tutorial_django/bandas/. No mapeamento acima relacionamos padrões de URLs através de expressões regulares simples com as views. A view index é executada quando acessamos uma url como http://localhost:8000/bandas/.
A view detalhar por sua vez, é executada quando uma url to tipo http://localhost:8000/bandas/1/ é acessada, no lugar de 1 pode haver qualquer outro valor numerico.
Para não darmos de cara com um erro, devemos, antes de tentar acessar alguma URL, implementar as views no arquivo views.py

Acima temos um exemplo de implementação para as views index e detalhar. Na view index nos recuperamos todas as bandas persistidas iterando-as e os seus albums. Na view detalhar, além do request, é passado o atributo banda_id. A partir deste atributo recuperamos a banda específica e iteramos os albums dela.
Veja que nas duas views precisamos montar o texto que vai ser exibido armazenando os dados em uma variável chamada output. Depois que ela tiver todo o conteúdo retornamos um HttpResponse com o texto a ser exibido.
O problema da implementação acima é que o design da página esta todo escrito em python, o que dificulta a manutenção além de ser uma forma complicada de escrever telas. Por esse motivo o Django dispõe de um sistema de templates que nos a ajuda a criar telas de forma fácil e organizada.
Templates
Você logo verá como um template funciona com django. Para isso, primeiramente crie uma pasta onde você gostaria de guardar os seus templates e coloque o caminho dela no arquivo settings.py

Crie uma pasta abaixo do seu diretório de templates com o nome da aplicação, no nosso caso bandas, e dentro dela crie os arquivos index.html e detalhar.html. Abaixo segue um exemplo de como podem ficar nossos templates:


Para que os templates funcionem adequadamente temos que modificar as nossas views:

Agora a implementação das views ficou mais mais limpa e objetiva, deixando a camada de apresentação devidamente separada do controle.
Note que tivemos algumas novidades. O atalho render_to_response() que recebe uma string que diz qual o template que vai ser renderizado e um dicionario com as variáveis que vão ser acessadas no template. Outra novidade é o uso da exceção Http404. Na view detalhar tentamos recuperar uma banda pelo id, se a banda não existir lançamos a exceção Http404 que nos encaminha para a página padrão do servidor de página não encontrada.


Submetendo dados de um formulário
Agora vamos construir alguns formulários para que possamos entrar com dados no nosso sistema. Primeiramente vamos fazer a tela para inserir uma nova banda.


Vamos utilizar o formulário acima para submeter os dados de uma banda mas para acessa-lo devemos mapear a url que carrega o form e repare que a action do form aponta para outra url que deve também deve ser mapeada no urls.py.
(r’^bandas/nova/$’, ‘views.carregarNova’)
(r’^bandas/salvar/$’, ‘views.salvar’)
Depois de mapear a url devemos implementar a view que salva os dados de uma nova banda e a view que renderiza o formulário de entrada de dados.

A view carregarNova apenas renderiza o template com o formulário. A view salvar instância uma nova banda, salva e redireciona para a view já existente detalhar.
Com isso vimos os recursos básicos de Django, o que nos deu a possibilidade de produzir um exemplo funcional de como desenvolver uma aplicação. Vale lembrar que o Django possui muitos recursos além daqueles que vimos aqui a documentação do framework é bem completa. Para saber mais acesse: http://www.djangoproject.com/.
Show de bola, Pedro!
Artigo legal. Deu para ter uma idéia geral do framework. É bom ter uma equipe com pessoas com conhecimentos bem diversificados, e em diferentes linguagens como vocês tem aí na Sea. Abraço.
O que eu digo é … Parabéns!