Post on 14-Dec-2014
description
Framework para desenvolvimento Web
Eduardo Palma
django?
• Framework open source para aplicações web• Padrão de arquitetura MVC• Escrito em python
python?
• Linguagem de programação multiparadigma de alto nível• Multiplataforma• Open source• Interpretada• Tipagem dinâmica• Filosofia enfatiza a facilidade de leitura• Identação é importante
python
• Criada por Guido van Rossum• Primeira versão em 1991• Inpirada na linguagem ABC• Originalmente desenvolvida para o S.O. Amoeba criado por Andrew S. Tanenbaum• Atualmente na versão 3.1
Hello World
# programa em pythonprint 'Hello World!'
Identação
#imprime de 101 a 110for numero in range(1,11): soma = 100 + numero print somaprint 'Fim'
Quem usa python?
django
• Criado em 2003 por desenvolvedores do jornal Lawrence Journal-World
• Filosofia de desenvolvimento rápido para um ambiente com prazos apertados
• Código limpo e manutenível• Primeira versão pública lançada em 2005
Django Reinhardt
Objetivo
• Desenvolvimento de aplicações web complexas movidas a bancos de dados
• Enfatiza o reuso e a modularidade de componentes• Segue o princípio DRY (Don’t Repeat Yourself)• Utiliza python para tudo, tanto para a lógica, configurações e
modelos de dados
Desempenho
Arquitetura
• Componente de mapeamento objeto-relacional• URL dispatcher baseado em expressões regulares• Sistema de Views para processamento de requisições• Sistema de Templates para criação das páginas
Instalação
• Depois de baixar e descompactar o django:
C:\django\>python setup.py install
• Para criar um projeto:
C:\>django-admin.py startproject meuprojeto
• Para criar uma aplicação:
C:\meuprojeto\>python manage.py startapp meusite
Servidor para desenvolvimento
Admin
Model
from django.db import models
class Pessoa(models.Model): nome = models.CharField(max_length=30) sobrenome = models.CharField(max_length=30) login = models.CharField(max_length=20, unique=True) password = models.CharField(max_length=20) email = models.EmailField(max_length=60) data_cadastro = models.DateTimeField(auto_now_add=True)
• Um model é uma classe que herda da classe models.Model• Cada classe é uma tabela no banco de dados• Cada propriedade desta classe é uma coluna desta tabela• Faz o mapeamento objeto-relacional
View
• As views são funções responsáveis pelo processamento de requisições
• Retornam valores para a template (página html)• Cada view responde à uma URL específica
def pagina_principal(request): return HttpResponse('Hello, World!')
URL dispatcher
• Faz o mapeamento entre URLs e views• Utiliza expressões regulares para capturar diferentes padrões
de URL facilmente• Permite a captura de um número ilimitado de parâmetros na
URL, de forma anônima ou nomeada
urlpatterns = patterns('aggregator.web.views',(r'^$', 'index'), (r'^pagina/(?P<page_num>\d*)', 'main'),(r'^artigo/(?P<article_id>\d+)-(\w*)', 'article'),(r'^adicionar_artigo/', 'add_article'), (r'^enviar_artigo/', 'send_article'),(r'^registro/', 'register'),)
Template
• Produz a página HTML final• Utiliza uma linguagem de marcação própria• Possui tags extensíveis tanto para construções lógicas como
para a formatação visual dos dados• Recebe dados da view e os utiliza para montar a página
<form action="/cadastro/" method="post"> {{ errors }} {% for field in form %} {{ field.errors }} {{ field.label_tag }}: <br /> {{ field }} {{ field.help_text }} {% endfor %}<input type="submit" value="Registrar-se" />
Settings
• Arquivo central que mantém todas as configurações de uma aplicação django
• Utiliza python ao invés de uma sintaxe própria
DEBUG = TrueTEMPLATE_DEBUG = DEBUGSESSION_COOKIE_AGE = 604800
DATABASE_ENGINE = 'django.db.backends.sqlite3' DATABASE_NAME = 'c:/aggregator/aggregatordb' DATABASE_USER = ''DATABASE_PASSWORD = ''
LANGUAGE_CODE = 'pt-br'TIME_ZONE = 'America/Sao_Paulo'