Técnicas para preparação e desenvolvimento de sites em django

54
Técnicas para preparação e desenvolvimento de sites com django Mário Chaves 26/02/2011 FA7

description

Algumas dicas para desenvolvimento de projetos em python.

Transcript of Técnicas para preparação e desenvolvimento de sites em django

Page 1: Técnicas para preparação e desenvolvimento de sites em django

Técnicas para preparação e desenvolvimento de sites com

djangoMário Chaves 26/02/2011

FA7

Page 2: Técnicas para preparação e desenvolvimento de sites em django

Apresentação:

 Desenvolvedor WEB eDesigner desde 2003

1.5 anos de Python =) 

MBA em Design [email protected]

MÁRIOMÁRIO

Page 3: Técnicas para preparação e desenvolvimento de sites em django

Python:

Nativo em:

Facilmente instalado em:

• Python (Oficial)• Active Python• ...

Page 4: Técnicas para preparação e desenvolvimento de sites em django

PIP

Um poderoso substituto para o easy_install com mais funcionalidades

** PIP Install Packages **

Page 5: Técnicas para preparação e desenvolvimento de sites em django

Comando: Install

pip install [nome do pacote]pip install -U [nome do pacote]

Traz a ultima versão do pacote disponível no Pypi (Python Package Index).

pip install -e hg+http://bitbucket.org/conta/projeto/

Instala pacote a partir de uma URL usando o parametro -e para informar o modo editable.

Page 6: Técnicas para preparação e desenvolvimento de sites em django

Comando: Install

Utilizar operadores para especificar a versão desejada.

pip install [nome do pacote] == 1.2pip install [nome do pacote] >= 1.1pip install [nome do pacote] >  1.0pip install [nome do pacote] <  1.3pip install [nome do pacote] <= 0.8

Page 7: Técnicas para preparação e desenvolvimento de sites em django

Comando: Uninstall

Desinstala pacotes do Python em execução.

pip uninstall [nome do pacote]

Page 8: Técnicas para preparação e desenvolvimento de sites em django

Comando: Freeze

Lista todos os pacotes do Python que o pip está sendo executado.

pip freeze        Fabric==0.9.3

     SQLAlchemy==0.6.3 applib==1.0.1

     distribute==0.6.14

Page 9: Técnicas para preparação e desenvolvimento de sites em django

Comando: Freeze

Muito utilizado para gerar arquivo de requerimentos.

pip freeze > requerimentos-dev.txt

Facilidade na instalação de pacotes.pip install requerimentos-dev.txt

A partir de requerimentos_dev.txt podemos gerar um arquivo requerimentos_prod.txt

pip freeze -r requerimentos-dev.txt > requerimentos-prod.txt

Page 10: Técnicas para preparação e desenvolvimento de sites em django

Comando: Bundle

Cria Bundles, Bundles são pacotes que contém vários pacotes.

pip bundle pybundlepip bundle pacote.pybundle pacote

Instalando um bundle com pacotes e dependências em outro ambiente.

pip install pacote.pybundle

Page 11: Técnicas para preparação e desenvolvimento de sites em django

Comando: Search

Busca pacotes Python no PyPI.

pip search pacote

Page 12: Técnicas para preparação e desenvolvimento de sites em django

Comando: Zip

Compacta pacotes. O pacote pode estar na raiz ou no PYTHONPATH do python em execução.

pip zip pacote

Page 13: Técnicas para preparação e desenvolvimento de sites em django

Comando: Unzip

Descompacta o pacote especificado.

pip unzip pacote

Page 14: Técnicas para preparação e desenvolvimento de sites em django

Comando: Help

Lista os comandos do pip.

pip help

Page 15: Técnicas para preparação e desenvolvimento de sites em django

VirtualenvCrie ambientes virtuais isolados para

projetos Python

Page 16: Técnicas para preparação e desenvolvimento de sites em django

Virtualenv: instalação

Crie ambientes virtuais isolados e instale qualquer pacote Python sem medo.

** Instale via pip **

pip install virtualenv

Page 17: Técnicas para preparação e desenvolvimento de sites em django

Comando: virtualenv

Cria um ambiente virtual isolado.

virtualenv meu_python

Para não reaproveitar pacotes já instalados no Python em execução, utilize.

virtualenv --no-site-packages meu_python

Page 18: Técnicas para preparação e desenvolvimento de sites em django

Ativar com activate

Ativar algum ambiente virtual previamente criado.

source path/to/meu_python/bin/activateou

. path/to/meu_python/bin/activate

Para se certificar que o ambiente foi ativado, veja se o nome do seu ambiente está no início da

linha do prompt de comando.Ex. (meu_python)$ _

Page 19: Técnicas para preparação e desenvolvimento de sites em django

Desativar com deactivate

Desativar o ambiente virtual ativo.

(meu_python)$ deactivate

O prompt de comando retorna ao seu estado normal.

Page 20: Técnicas para preparação e desenvolvimento de sites em django

VirtualenvwrapperVárias facilidades de uso para a

virtualenv!

Page 21: Técnicas para preparação e desenvolvimento de sites em django

Virtualenvwrapper:

Facilidades? Porquê não instalar?

** Instale via pip **

pip install virtualenvwrapper

Após a instalação crie uma pasta chamada .virtualenvs em seu profile dir (unix ou

macos)

$ mkdir ~/.virtualenvs

Page 22: Técnicas para preparação e desenvolvimento de sites em django

Virtualenvwrapper:

Após a instalação também é necessáriocarregar o script virtualenvwrapper.sh

adicione ao seu ~/.bashrc, ~/.bash_profileou ~/.profile no caso de MacOS

export WORKON_HOME= $HOME/.virtualenvssource /caminho/bin/virtualenvwrapper.sh

Agora é so reiniciar o terminal e começar a utilizar os recursos da virtualenvwrapper

Page 23: Técnicas para preparação e desenvolvimento de sites em django

Comando: mkvirtualenv

Cria um ambiente virtual isolado similar ao virtualenv, sendo que não é necessário caminhar até o local onde o ambiente virtual será criado.

mkvirtualenv meu_python

Podendo passar os argumentos do comando virtualenv Ex. mkvirtualenv --no-site-packages

Page 24: Técnicas para preparação e desenvolvimento de sites em django

Comando: rmvirtualenv

Remove o ambiente virtual

rmvirtualenv meu_python

PS. É necessário que o ambiente virtual esteja desativado.

Page 25: Técnicas para preparação e desenvolvimento de sites em django

Comando: workon

Ativa um ambiente virtual.

workon meu_python

PS. Quando passado sem parâmetros, lista os ambientes virtuais disponíveis.

workon meu_pythonmeu_python

        python_meu_projeto

Page 26: Técnicas para preparação e desenvolvimento de sites em django

Comando: cdvirtualenv

Muda o diretório atual para o diretório da virtualenv em execução.

(meu_python)$ cdvirtualenv

(meu_python)$ pwd

(meu_python)$ /caminho/meu_python/

Page 27: Técnicas para preparação e desenvolvimento de sites em django

Comando: cdsitepackages

Muda o diretório atual para o diretório do site packages da virtualenv em execução.

(meu_python)$ cdsitepackages

(meu_python)$ pwd

(meu_python)$ /python/site-packages/

Page 28: Técnicas para preparação e desenvolvimento de sites em django

Comando: lssitepackages

Lista os pacotes disponíveis no site packages do ambiente atual.

(meu_python)$ lssitepackages

...Django-1.2.5-py.26.egg-info

PILimagekit

...

Page 29: Técnicas para preparação e desenvolvimento de sites em django

Comando: cpvirtualenv

Clona um ambiente virtual existente.

cpvirtualenv meu_python clone_meu_python

Page 30: Técnicas para preparação e desenvolvimento de sites em django

Aptana Studio + PydevIDE livre para desenvolvimento!

Page 31: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

File > New

Page 32: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

Configurar o interpretador

Page 33: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

Criar uma virtualenv para o projeto antes de configurar o Aptana

Page 34: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

Page 35: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

Clicar emSelect all

Page 36: Técnicas para preparação e desenvolvimento de sites em django

Configuração básica do ambiente

Page 37: Técnicas para preparação e desenvolvimento de sites em django

Configuração django project

Page 38: Técnicas para preparação e desenvolvimento de sites em django

Configuração django project

Page 39: Técnicas para preparação e desenvolvimento de sites em django

Configuração django project

Page 40: Técnicas para preparação e desenvolvimento de sites em django

Comando: runserver

Page 41: Técnicas para preparação e desenvolvimento de sites em django

Output: It worked!

Page 42: Técnicas para preparação e desenvolvimento de sites em django

Outros comandos

Page 43: Técnicas para preparação e desenvolvimento de sites em django

Pydev: auto-complete / code

Page 44: Técnicas para preparação e desenvolvimento de sites em django

Pydev: auto-complete / templates

Page 45: Técnicas para preparação e desenvolvimento de sites em django

Dicas gerais

• Criar imagens do layout para validação junto aos P.O's (Assinatura do P.O.s).

• Criar templates em html com css, js e imagens.

• Usar frameworks javascript para aumentar a produtividade no desenvolvimento de páginas mais interativas.

Page 46: Técnicas para preparação e desenvolvimento de sites em django

Dicas do settings

• Criar módulo com configurações específicas.

• try:•     from config import *• except ImportError, e:•     raise e• +-----------------------------------------+•  # -*- coding: utf-8 -*-•  import os•  ROOTDIR = os.path.dirname(__file__)•  DATABASES = { #Configs do banco }•  SECRET_KEY = "$k(&8nawrt*dt%%ei6e%m0wn0z-)bdh-^-jv-ryke"•  # configurações de email•  DEFAULT_FROM_EMAIL = "[email protected]"•  ...

Page 47: Técnicas para preparação e desenvolvimento de sites em django

Dicas do settings• Localização e internacionalização básica do projeto.

• TIME_ZONE = 'America/Fortaleza'• LANGUAGE_CODE = 'pt-br'• USE_I18N = True # Internacionalizar (trans)• USE_L10N = True # Localizar (datas, nºs ...)

• Informar diretórios e urls básicas ao settings

• MEDIA_ROOT = os.path.join(ROOTDIR, 'media')• MEDIA_URL = '/media/'• ADMIN_MEDIA_PREFIX = '/admin_media/'• TEMPLATE_DIRS = (os.path.join(ROOTDIR, 'media'),)

Page 48: Técnicas para preparação e desenvolvimento de sites em django

Dicas do settings• Framework de mensagens do django.

• # Alocação das mensagens na sessão• MESSAGE_STORAGE =

'django.contrib.messages.storage• .session.SessionStorage’

• Login e logout urls

• LOGIN_URL = "/accounts/login/"• LOGOUT_URL = "/accounts/logout/"• LOGIN_REDIRECT_URL = "/"• Dados iniciais para tabelas padrões• FIXTURE_DIRS = (os.path.join(ROOTDIR, 'fixtures'),)• ./manage.py dumpdata --exclude=my_apps\• --format=json --indent=4 > fixtures/initial_data.json

Page 49: Técnicas para preparação e desenvolvimento de sites em django

Dicas do settings, locale default

Page 50: Técnicas para preparação e desenvolvimento de sites em django

Dicas do settings, locale default

Page 51: Técnicas para preparação e desenvolvimento de sites em django

Templates pra dentro do django

• Passar os templates para o django sem funcionalidades.

• Inserir templates na raiz do diretório templates.

• Configurar rotas para acessá-los de forma estática.

urlpatterns = patterns('',    url(r'^$', 'django.views.generic.simple.direct_to_template',    {'template': 'index.html', name='index'},)

Page 52: Técnicas para preparação e desenvolvimento de sites em django

Dicas django

• Dividir o projeto em django apps.

• Criar uma app website para sessões simples e específicas do site (Equipe, Links, Contato, etc).

• Dependendo do tamanho e do custo do projeto, usar SQLite para desenevolvimento e produção.

• Automatizar CMS utilizando o admin do django.

Page 53: Técnicas para preparação e desenvolvimento de sites em django

Dicas django• Utilizar flatpages para páginas do tipo "Sobre a empresa".

• Utilizar fixtures para configurações gerais e específicas de cada app com dados iniciais em json.

• Usar dumpdata para exportar dados em formato json.

• App para migração de dados, alteração em tables (South, Evolution, etc) e ajuda em debug com django debug-toolbar.

Page 54: Técnicas para preparação e desenvolvimento de sites em django

fim!