Quem sou eu

Minha foto

Formado em Computação, desenvolvedor web, interessado em tecnologia, metaleiro e um gamer inveterado.

Pesquisar

terça-feira, 13 de janeiro de 2009

Parte 1 - O Projeto

Defini como projeto, algo genérico suficiente para podermos seguir de maneira fácil e possibilitar adpatções conforme for o desenrolar do mesmo.
Utilizarei no meu exemplo, um sitema para gerenciar cds, dvds e livros de um colecionador.

O INÍCIO

Crie uma pasta para armazenar seus projetos, de preferência um lugar fácil para acessar via prompt (Ex. C:\Projetos). Para criar seu projeto vá até sua pasta de projetos e digite o comando:

django-admin.py startproject app

Neste exemplo, adoto por padrão o nome app para meu projeto. Mais a frente entrarei em detalhes sobre isso.

Ao executar o comando, na sua pasta de projetos será criada uma pasta com o nome do projeto escolhido e dentro dela 4 arquivos:
  • __init__.py
    Este arquivo não será utilizado por hora, mas ele serve para informar ao django que é uma pasta com conteúdo Python.

  • manage.py
    Este arquivo será utilizado mais a frente quando for criar as aplicações para o projeto

  • settings.py
    Este arquivo é o responsável por gerenciar todas as configurações do seu projeto. Entraremos em mais detalhes abaixo.

  • urls.py
    Este arquivo conterá todas as urls de nossas aplicações mapeadas para suas respectivas views.

O SETTINGS.PY

Abra o settings.py da raiz do projeto. Por hora, irei alterar apenas o básico de forma a colocar o administrativo gerado pelo django com poucas alterações:

coloque o seguinte comando na primeira linha do seu arquivo:

from os import path as os_path

Nesta linha, estou importando o objeto path do pacote os, e colocando um alias para tal: os_path. Utilzaremos isso logo a seguir para configurar o media.


Os controles de debug servem para o django gerar uma tela erro ao desenvolvedor informando o motivo do erro. Mais a frente tratarei dos erros mais comuns de cometer durente o desenvolvimento. Por hora, deixe as duas linhas como estão:

DEBUG = True TEMPLATE_DEBUG = DEBUG


Vamos criar duas setting neste ponto para definir o caminho e a url do projeto. Coloque os comandos a seguir abaixo dos controles do DEBUG.

PROJECT_PATH = os_path.abspath(os_path.split(__file__)[0])
SITE_URL = 'http://localhost:8000/'



Certifique-se que a setting SITE_URL tenha uma barra no final conforme o código acima.

Logo em seguida está uma tupla com os administradores do seu projeto. Coloque seu nome e seu email. nos respectivos lugares e descomente a linha. Isso será util mais a frente quando for colocar para enviar os logs de erros para o email. Deixe seu código assim:

ADMINS = ( ('Seu nome aqui', 'seuemail@provedor.com.br'), )

VALE LEMBRAR:

A indentação para indicar que os elementos hierarquicamente dispostos têm o mesmo avanço relativamente à posição (x,0). Na maioria das linguagens a indentação tem um papel meramente estético, tornando a leitura do código fonte muito mais fácil (read-friendly), porém é obrigatória em outras. Python, por exemplo, utiliza esse recurso tornando desnecessário o uso de certos identificadores de blocos ("begin" e/ou "end").

Para este tutorial utilizarei UM TAB, para cada nível de indentação


O Banco de Dados

Crie uma database no seu banco de dados e configure cada variável com seu respectivo valor conforme o exemplo abaixo:


DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'app'

DATABASE_USER = 'usuario'

DATABASE_PASSWORD = 'senha'

DATABASE_HOST = '' # deixe vazio para localhost

DATABASE_PORT = '' #deixe vazio para porta padrao do banco escolhido. Neste caso 3306.



O usuário informado acima deve ter privilégios para criação/alteração de tabelas, indices etc., na database informada.

Acerte também o fuso horário que deseja utilizar:

TIME_ZONE = 'America/Sao_Paulo'

Outro recurso muito interessante é a internacionalização. O Django já provê uma serie de facilidades para deixar seu projeto multi-lingua. Mais a frente , mostro como funciona a traduçãio automática. Coloque o idioma padrão aqui:
LANGUAGE_CODE = 'pt-Br'

O próximo setting é o ID do site que está trabalhando. Com o django é possível utilizar a mesma administração pra projetos semelhantes porém independentes, gerenciando através desta setting. Deixe ela sem nenhuma alteração como descrito abaixo:

SITE_ID = 1

A próxima setting é referente a internacionalização. Deixe ela como True que iremos utilizá-la mais a frente.

USE_I18N = True


O MEDIA

O media é onde ficarão todos os arquivos referentes a conteúdo, como por exemplo
  • páginas de estilos (css)
  • javascripts
  • todos os arquivos vindos de upload pela administração, tais como fotos, videos, pdfs, etc.
A correta configuração do media se faz necessária para acessar os conteúdos descritos acima. Para definir um padrão de configuração, vamos utilizar a setting PROJECT_PATH, defina anteriormente. Deixe a configuração do media da seguinte forma:

  1. MEDIA_ROOT = os_path.join(PROJECT_PATH, 'media')
  2. MEDIA_URL = '%smedia/' % SITE_URL # trailing slash
  3. ADMIN_MEDIA_PREFIX = '%smedia/' % SITE_URL # trailing slash.

No item 1, usaremos o método join do objeto os_path previamente importado para concatenar o caminho do projeto com a string media. Já no item 2, será definido a url do media. O conteudo de %s será substituido pela setting SITE_URL (outra forma de concatenação de strings), também previamente definida. E por fim, no item 3, o caminho do media para o administrativo, igualmente definido no item 2.

Para o administrativo do django, não é necessário ter uma pasta media dentro do seu projeto. Farei isso mais a frente quando criar uma aplicação que precisará disso.

A setting SECRET_KEY, faz parte do algoritmo de criptografia que o django utiliza para gerar senhas por exemplo. Deixe esta setting sem nenhuma alteração.


A tupla MIDDLEWARE_CLASSES define quais middlewares serão utilizados pelo projeto, por default 3 deles já vem adicionados a lista e por hora são apenas os necessários. Deixe esta settings também sem nenhuma alteração.


ROOT_URLCONF define qual será o arquivo de urls utilizado pelo projeto. No caso usaremos o criado na raiz do projeto. Por default, essa setting já vem com esse valor, apenas confira para checar:

ROOT_URLCONF = 'app.urls'


A tupla TEMPLATE_DIRS é a responsável por mapear os possíveis caminhos para seus templates que serão utilizados nas views de suas aplicações e/ou alguma view personalizada no admin. Este tópico será discutido mais a frente.
Deixe a tupla da seguinte forma:

TEMPLATE_DIRS = ( os_path.join(PROJECT_PATH, 'templates') )


E por fim, a setting INSTALLED_APPS é a tupla que contém todas as aplicações instaladas do seu projeto. Vale destacar que se desenvolvido corretamente uma aplicação, é possivel torná-la plugável e utilizá-la em outros projetos de forma fácil e rápida.
Por hora apenas adicione a aplicação dos usuarios do admin:

INSTALLED_APPS = (


'django.contrib.auth',

'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',

'django.contrib.admin', #linha que adiciona o admin

)


Com o settings.py configurado, vá ao promtp, navegue até a pasta do seu projeto (C:\Projetos\app) e execute o seguinte comando para a criação do banco:

python manage.py syncdb

Isto irá criar todas as tabelas das aplicações instaladas, com relacionamentos, indices e de uma maneira otimizada.

Após a criação das tabelas, digite yes quando for questionado se deseja criar um super-usuário. Prencha os dados conforme forem solicitados.

Este usuário é o primeiro usuário com acesso ao administrativo. Trataremos da administração de usuários na Parte 2.


Para definirmos a url da administração, abra o urls.py e descomente as seguintes linhas linhas:

from django.contrib import
admin
admin.autodiscover()



e dentro de urlpatterns, descomente a url do admin:

(r'^admin/(.*)', admin.site.root),

No servidor de teste local do Django, é necessário informar que os conteudos da pasta media são conteudos estáticos.

No urls.py deixe o início do arquivo da seguinte forma:

from django.conf.urls.defaults import *
from django.conf import settings
from os import path as os_path


Ainda no urls.py coloque o seguinte código no final do arquivo:

if settings.DEBUG:


urlpatterns += patterns('',

(r'^media/(.*)$', 'django.views.static.serve', {'document_root': os_path.join(settings.PROJECT_PATH, 'media')}),)




Mais uma vez tome cuidado com a indentação.
Feito isso, vá até a pasta onde fez o checkout do Django (C:\Django\), e copie as seguintes pastas:

C:\Django\django\contrib\admin\media C:\Django\django\contrib\admin\templates

Agora vá até a raiz do seu projeto e cole-as.


Volte ao prompt e digite o seguinte comando para iniciar o servidor inbutido no django para testes:

python manage.py runserver

Com tudo corretamente configurado, você dever receber uma mensagem semelhante à:

Django version 1.1 pre-alpha, using settings 'app.settings'
Development server is running at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.



Pronto! Já temos o servidor do django rodando local para testes.
Vá ao navegador e digite o seguinte endereço:

http://localhost:8000/admin/

Com tudo rodando perfeitamente, você verá uma tela conforme a apresentada na Figura 1:


Figura 1. Interface de login da administração do Django


Caso queira ver tudo o que foi feito neste passo, acesse a administração com o super-usuário criado.

Na próxima parte, será explicado detalhes sobre a administração.

hasta! =D