Share
Embed
Desenvolvendo aplicações web com python e web2py
Palestra ministrada por mim e Bruno Barbosa, no FLISOL-DF de 2011
Gilson Filho
April 09, 2011
Transcript
90 slides
-
Gilson Filho e Bruno Barbosa Gilson Filho e Bruno Barbosa
Desenvolvendo aplicações Desenvolvendo aplicações web com Python e Web2Py web com Python e Web2Py -
Gilson Filho Gilson Filho • Programador há 5 anos; Programador
há 5 anos; • Desenvolvimento web há 3 anos; Desenvolvimento web há 3 anos; • Moderador do GruPy-DF; Moderador do GruPy-DF; • Usuário linux há 3 anos; Usuário linux há 3 anos; • Programador Java e Python; Programador Java e Python; • Criador do FLISOL Inscriptions; Criador do FLISOL Inscriptions; • Participante do web2py-developers e equipe de Participante do web2py-developers e equipe de tradução do web2py. tradução do web2py. @gilsonfilho @gilsonfilho http://gilsondev.com http://gilsondev.com http://github.com/contatogilsonsbf http://github.com/contatogilsonsbf -
Bruno Barbosa Bruno Barbosa • Graduando em Análise e Desenvolvimento
de Graduando em Análise e Desenvolvimento de Sistemas; Sistemas; • Programador Python, Desenvolvedor Web – Programador Python, Desenvolvedor Web – web2py, Plone; web2py, Plone; • Criador do Quebra Link; Criador do Quebra Link; • Criador do FLISOL Inscriptions; Criador do FLISOL Inscriptions; • Moderador do GruPy-DF; Moderador do GruPy-DF; • Membro da equipe de tradução do web2py; Membro da equipe de tradução do web2py; @bruninbsb @bruninbsb http://algoritmizando.com http://algoritmizando.com http://github.com/bruninbsb http://github.com/bruninbsb -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
Criada por Guido Van Criada por Guido Van Rossum em
1989 Rossum em 1989 -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
O que é Python? O que é Python? • Interpretada
Interpretada • Very High Level Language Very High Level Language • Criada por Guido Van Rossum em 1989 Criada por Guido Van Rossum em 1989 • Multiplataforma Multiplataforma • Orientada a Objetos, procedural e funcional Orientada a Objetos, procedural e funcional • Software Livre Software Livre • Baterias Incluídas Baterias Incluídas • Sintaxe elegante simples e clara Sintaxe elegante simples e clara • Tipagem dinâmica e forte Tipagem dinâmica e forte -
Variáveis Variáveis # -*- coding: utf-8 -*- # Tipagem forte
e dinâmica var_int = 11 var_float = 1.1 var_text = "Isso é uma String" print type(var_int) # int print type(var_float) # float print type(var_text) # str (String) -
Lista, Tupla e Dicionários Lista, Tupla e Dicionários # -*-
coding: utf-8 -*- # Lista pode ser alterado lista01 = [1,2,3] lista02 = ['a','b','c'] # Tupla não pode ser alterado tupla01 = (1,2,3) tupla02 = ('a','b','c') # Chaves e Valores pode ser de qualquer tipo dicionario01 = {'a':1,'b':2,'c':3} dicionario02 = {1:'a',2:'b',3:'c'} -
Estrutura Condicional Estrutura Condicional # -*- coding: utf-8 -*- if
<condicao>: <bloco de código> elif <condição>: # Mesma coisa que else if <bloco de código> elif <condição>: <bloco de código> else: <bloco de código> -
Laços - For Laços - For # -*- coding: utf-8
-*- for <referência> in <sequência>: <bloco de código> continue break -
Laços - While Laços - While # -*- coding: utf-8
-*- while <condição>: <bloco de código> continue break -
Valores booleanos Valores booleanos # -*- coding: utf-8 -*- vai_passar
= True if vai_passar: print 'Condicao aprovada' nao_passa = False if nao_passa: print 'Não pode passar!' else: print 'Não era para passar mesmo.' -
Valores booleanos Valores booleanos # -*- coding: utf-8 -*- #
Os valores abaixam também é do tipo False zero = 0 nulo = None string_vazia = '' if zero: # (...) elif nulo: # (...) elif string_vazia: # (...) else: print 'Todos os valores testados acima sao False.' -
Comentários Comentários # Comentário de uma linha # Linha que
seta a codificação do arquivo # -*- coding: utf-8 -*- """ Doc String """ -
Funções Funções # -*- coding: utf-8 -*- def func(parametro1, parametro2=padrao):
""" Doc String """ <bloco de código> return valor -
É um framework criado em É um framework criado em
2007 por Massimo Di Pierro 2007 por Massimo Di Pierro -
Foi criado no intuito de ensinar os Foi criado no
intuito de ensinar os seus alunos da faculdade seus alunos da faculdade -
É um projeto open source (LGPL v3) É um projeto
open source (LGPL v3) -
Não é necessário instalar e Não é necessário instalar e
configurar para desenvolver configurar para desenvolver -
Módulo de Autenticação e Módulo de Autenticação e permissão de
acesso prontos permissão de acesso prontos -
Possui uma administração de Possui uma administração de banco de
dados banco de dados -
Possível editar o projeto com um Possível editar o projeto
com um editor editor web-based web-based -
O uso da interface O uso da interface administrativa é
opcional administrativa é opcional -
Renderiza o conteúdo em vários Renderiza o conteúdo em vários
formatos formatos -
def hello(): message = "Hello World" return message Controller básico
Controller básico hello/controllers/default.py hello/controllers/default.py -
def hello(): message = "Hello World" return dict(msg=message) Enviando conteúdo
para a view Enviando conteúdo para a view hello/controllers/default.py hello/controllers/default.py -
{{ extend 'layout.html' }} <h1>{{=msg}}</h1> {{ include 'default/outra_msg.html' }} Adicionando
herança e inclusão Adicionando herança e inclusão hello/views/default/hello.html hello/views/default/hello.html -
Mas e a camada de dados? Mas e a camada
de dados? -
“ “DAL é uma API que DAL é uma API
que mapeia objetos Python mapeia objetos Python em objetos de banco de dados em objetos de banco de dados como como queries,tabelas e registros. A DAL gera queries,tabelas e registros. A DAL gera códigos SQL dinâmicamente em tempo real códigos SQL dinâmicamente em tempo real utilizando sempre o dialeto SQL referente ao utilizando sempre o dialeto SQL referente ao banco de dados em uso.” banco de dados em uso.” http://web2py.com/book http://web2py.com/book -
Comunica com a maioria dos Comunica com a maioria dos
bancos de dados bancos de dados -
Pode ser usado em outros Pode ser usado em outros
frameworks frameworks -
db = DAL('mysql://username:password@localhost/test') db = DAL('postgres://username:password@localhost/test') db = DAL('mssql://username:password@localhost/test') db
= DAL('firebird://username:password@localhost/test') db = DAL('oracle://username/password@test') db = DAL('db2://username:password@test') db = DAL('ingres://username:password@localhost/test') db = DAL('informix://username:password@test') db = DAL('gae') -
Tipos de dados Tipos de dados • String String •
Text Text • Blob Blob • Boolean Boolean • Integer Integer • Double Double • decimal(n,m) decimal(n,m) • Date Date • Time Time • Datetime Datetime • Password Password • Upload Upload • Referente <table> Referente <table> • List:string List:string • List:integer List:integer • List:referente <table> List:referente <table> -
Relacionamentos Relacionamentos Um para Muitos Um para Muitos db.define_table('group', Field('name','string',length=50)
) db.define_table('contact', Field('name'), Field('group',db.group) ) -
Relacionamentos Relacionamentos db.define_table('group', Field('name','string',length=50) ) db.define_table('contact', Field('name')) Muitos para Muitos
Muitos para Muitos db.define_table('role', Field('group_id',db.group), Field('contact_id',db.contact) ) -
Mais informações sobre web2py Mais informações sobre web2py Site Oficial
http://web2py.com Web2Py Brasil http://web2pybrasil.appspot.com Web2Py Slices (Tutoriais,Artigos,Snippets) http://web2pyslices.com Web2Py Group http://groups.google.com/group/web2py Web2Py Users Brazil http://groups.google.com/group/web2py-users-brazil Web2Py Ebook http://web2py.com/book