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

Post on 18-Dec-2014

2.754 views 4 download

description

Algumas dicas para desenvolvimento de projetos em python.

Transcript of 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

Apresentação:

 Desenvolvedor WEB eDesigner desde 2003

1.5 anos de Python =) 

MBA em Design Digitalmacndesign@gmail.com

MÁRIOMÁRIO

Python:

Nativo em:

Facilmente instalado em:

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

PIP

Um poderoso substituto para o easy_install com mais funcionalidades

** PIP Install Packages **

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.

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

Comando: Uninstall

Desinstala pacotes do Python em execução.

pip uninstall [nome do pacote]

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

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

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

Comando: Search

Busca pacotes Python no PyPI.

pip search pacote

Comando: Zip

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

pip zip pacote

Comando: Unzip

Descompacta o pacote especificado.

pip unzip pacote

Comando: Help

Lista os comandos do pip.

pip help

VirtualenvCrie ambientes virtuais isolados para

projetos Python

Virtualenv: instalação

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

** Instale via pip **

pip install virtualenv

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

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)$ _

Desativar com deactivate

Desativar o ambiente virtual ativo.

(meu_python)$ deactivate

O prompt de comando retorna ao seu estado normal.

VirtualenvwrapperVárias facilidades de uso para a

virtualenv!

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

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

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

Comando: rmvirtualenv

Remove o ambiente virtual

rmvirtualenv meu_python

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

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

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/

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/

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

...

Comando: cpvirtualenv

Clona um ambiente virtual existente.

cpvirtualenv meu_python clone_meu_python

Aptana Studio + PydevIDE livre para desenvolvimento!

Configuração básica do ambiente

File > New

Configuração básica do ambiente

Configurar o interpretador

Configuração básica do ambiente

Criar uma virtualenv para o projeto antes de configurar o Aptana

Configuração básica do ambiente

Configuração básica do ambiente

Clicar emSelect all

Configuração básica do ambiente

Configuração django project

Configuração django project

Configuração django project

Comando: runserver

Output: It worked!

Outros comandos

Pydev: auto-complete / code

Pydev: auto-complete / templates

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.

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 = "macndesign@gmail.com"•  ...

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'),)

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

Dicas do settings, locale default

Dicas do settings, locale default

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'},)

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.

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.

fim!