Criando o primeiro projeto em Django, rápido e fácil.

13, maio 2012   •   (Não há comentários)   •   Autor: servicos

Olá pessoal, estou de volta, tentando manter o rigor de escrever pelo menos um post a cada semana. Como sempre, não estou com muito tempo, mas acho que estou melhorando na minha organização.

Nesse final de semana recebi uma demanda bem pequena de um projeto e decidi que iria desenvolvê-lo em Django, sabendo que ainda não tinha feito nada para o blog sobre isso, resolvi criar um pequeno post para os iniciantes nesse Framework.

O que é o Django ?

O Django é um framework em Python. Ele possue uma arquitetura diferenciada, MTV (model, template e viewer). Tem poucas diferenças com o padrão MVC. Mas para continuar, em outro post explicarei melhor sobre esses detalhes. O Django se destaca por sua facilidade na criação rápida dos projetos.

Virtualização de ambiente

Como uma boa prática em projeto com python, devemos instalar um ambiente separada para cada projeto, assim podemos utilizar versões diferentes de bibliotecas em projetos distintos sem ter interferencia entre eles.

Vamos lá, primeiro como gerenciador global dos pacotes, precisaremos instalar o EASY_INSTALL:

$ sudo apt-get install python-setuptools python-dev build-essential

Em seguida por meio dele vamos instalar o PIP, um instalador de pacotes do python.

$ sudo easy_install pip

Agora só falta instalar o virtualenv que o é responsável pela criação dos ambientes para os projetos.

$ sudo pip install virtualenv

$ sudo pip install virtualenvwrapper

Seguindo, vamos criar a pasta do nosso projeto, criar o ambiente e ativar o ambiente. Depois disso qualquer pacote que instalarmos ficará isolado com relação ao resto do sistema,

$ mkdir projeto_django && cd projeto_django

$ virtualenv –no-site-packages env

$ source env/bin/activate

Estamos nesse instante na parte fácil que é instalar o Django e começar a brincar. Detalhe, deveremos estar com o ambiente ativado

$ pip install django

Criando projeto Django

Após a preparação do ambiente, enfim vamos criar nosso projeto Django com o comando django-admin.py usando o argumento startproject. Em seguida entre na pasta criada.

$ django-admin.py startproject projeto

$ cd projeto

Observe que foi gerado uma estrutura parecida como da imagem ao lado.

O arquivo manage.py será nosso gestor do projeto, por meio dele, criaremos aplicações, faremos o sincronismo com o banco de dados, iniciaremos o servidor de teste e muitas outras opções.

Os arquivos que estão na subpasta com o mesmo nome do projeto terá a finalidade de configuração de diretivas e  definição das urls.
Vamos testar para saber se o projeto está funcionando corretamente, assim execute o comando seguinte e acesso no browser: http://127.0.0.1:8000/

$ python manage.py runserver

Criando as aplicações

O Django como em vários outros frameworks, trabalha com modularização de aplicações, possibilitando a interações entre elas.

Com base no projeto que recebi, criaremos uma aplicação para controle de fotos.

$ python manage.py startapp fotos

Com a execução do comando, foi criado uma pasta chamada fotos e dentro dela mais três arquivos:

  • models.py  - definição dos modelos da base de dados utilizada pela aplicação
  • tests.py – definição dos teste
  • views.py – definição das chamada de funcionalidades

Partindo diretamente para a criação do modelo do banco de dados da nossa aplicação, vamos editar o arquivo models.py

from django.db import models

class Evento(models.Model):

nome = models.CharField(max_length=200)
data = models.DateTimeField()
local = models.CharField(max_length=200)

def __unicode__(self):

return self.nome

class Imagem(models.Model):

evento = models.ForeignKey(Evento)
legenda = models.CharField(max_length=200)
foto= models.ImageField(upload_to=’images’)

def __unicode__(self):

return self.legenda

Neste momento vamos definir o banco de dados e habilitar a aplicação no projeto, essa configurações devem ser feitas no settings.py. Observe os trechos de códigos a seguir:

Note que foi utilizado o sqlite3, mas poderia ser configurado com qualquer uma das quatro opções:  postgresql_psycopg2′, ‘mysql’, ‘sqlite3′ ou ‘oracle’

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.sqlite3′,
‘NAME’: ‘./schema.sql’,
‘USER’: ”,
‘PASSWORD’: ”,
‘HOST’: ”,
‘PORT’: ”,

}

}

INSTALLED_APPS = (

‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘fotos’,

)

Agora a etapa se resume em criar o modelo físico do banco com um comando de sincronização. Além do model que escrevemos, esse comando criará mais algumas tabelas de manipulação de usuário o que já é padrão para o Django, assim não precisamos nos preocupar com essa parte.

Antes de criarmos o banco, devemos executar outro comando, pois, como estamos usando um campo do tipo imagem no model em nossa aplicação o Django precisará de um pacote para manipulação das imagens, assim será necessário instalá-lo.

$ pip install pil

$ python manage.py syncdb

Admin em um piscar de olhos

Por fim, para temos realmente algo mais visível do projeto, vamos criar rapidamente o CRUD da aplicação, na qual representa a parte administrativa.

Primeiro vamos remover alguns comentários do arquivo urls.py, deixando-o como está abaixo.

OBS: adicionei uma url que não é padrão para termos acessarmos as imagens do upload.

from django.conf.urls import patterns, include, url
from django.conf import settings

 

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(”,

url(r’^admin/’, include(admin.site.urls)),

url(r’^media/(?P<path>.*)$’, ‘django.views.static.serve’, {‘document_root’: settings.MEDIA_ROOT}),

)

Dentro da pasta da aplicação “fotos” criaremos o arquivo admin.py, para registrar os módulos para área administrativa.
from fotos.models import Evento,Imagem
from django.contrib import admin

admin.site.register(Evento)
admin.site.register(Imagem)

Será necessário outra alteração no arquivo settings.py para habilitar a aplicação de administração no projeto, adicione a linha: ’django.contrib.admin’,  no array,  INSTALLED_APPS.

Pronto, só precisamos sincronizar novamente o banco e iniciar o servidor de teste.

python manage.py syncdb
python manage.py runserver


Maravilha, estamos com a aplicação de certa forma pronta, acesse o endereço: http://127.0.0.1:8000/admin e coloque o usuário e senha criados no momento da geração do banco.

Foi rápido não foi ? Criamos um CRUD da nossa aplicação em pouquíssimo tempo.

Temos muitas outras possibildiades com Django, infelizmente em um único post isso não é possível.

Recomendo a visita nesses sites:

Fico por aqui, até a próxima.