If you can't read please download the document
Upload
gilson-filho
View
9.899
Download
12
Embed Size (px)
Citation preview
Green with White Lines
Gilson Filho e Bruno Barbosa
Desenvolvendo aplicaes web com Python e Web2Py
Gilson Filho
Programador h 5 anos;
Desenvolvimento web h 3 anos;
Moderador do GruPy-DF;
Usurio linux h 3 anos;
Programador Java e Python;
Criador do FLISOL Inscriptions;
Participante do web2py-developers e equipe de traduo do web2py.
@gilsonfilho
http://gilsondev.com
http://github.com/contatogilsonsbf
Bruno Barbosa
Graduando em Anlise e Desenvolvimento de Sistemas;
Programador Python, Desenvolvedor Web web2py, Plone;
Criador do Quebra Link;
Criador do FLISOL Inscriptions;
Moderador do GruPy-DF;
Membro da equipe de traduo do web2py;
@bruninbsb
http://algoritmizando.com
http://github.com/bruninbsb
Python Bsico
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
Criada por Guido Van Rossum em 1989
Multiplataforma
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
Baterias includas!!!
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
O que Python?
Interpretada
Very High Level Language
Criada por Guido Van Rossum em 1989
Multiplataforma
Orientada a Objetos, procedural e funcional
Software Livre
Baterias Includas
Sintaxe elegante simples e clara
Tipagem dinmica e forte
Onde usada?
Exemplos Bsicos
Variveis
# -*- coding: utf-8 -*-
# Tipagem forte e dinmica
var_int = 11var_float = 1.1var_text = "Isso uma String"
print type(var_int) # intprint type(var_float) # floatprint type(var_text) # str (String)
Lista, Tupla e Dicionrios
# -*- coding: utf-8 -*-
# Lista pode ser alteradolista01 = [1,2,3]lista02 = ['a','b','c']
# Tupla no pode ser alteradotupla01 = (1,2,3)tupla02 = ('a','b','c')
# Chaves e Valores pode ser de qualquer tipodicionario01 = {'a':1,'b':2,'c':3}dicionario02 = {1:'a',2:'b',3:'c'}
Estrutura Condicional
# -*- coding: utf-8 -*-
if :elif : # Mesma coisa que else ifelif :else:
Laos - For
# -*- coding: utf-8 -*-
for in : continue break
Laos - While
# -*- coding: utf-8 -*-
while : continue break
Valores booleanos
# -*- coding: utf-8 -*-
vai_passar = True
if vai_passar: print 'Condicao aprovada' nao_passa = False
if nao_passa: print 'No pode passar!'else: print 'No era para passar mesmo.'
Valores booleanos
# -*- coding: utf-8 -*-
# Os valores abaixam tambm do tipo Falsezero = 0nulo = Nonestring_vazia = ''
if zero: # (...)elif nulo: # (...)elif string_vazia: # (...)else: print 'Todos os valores testados acima sao False.'
Comentrios
# Comentrio de uma linha
# Linha que seta a codificao do arquivo# -*- coding: utf-8 -*-
"""Doc String"""
Funes
# -*- coding: utf-8 -*-
def func(parametro1, parametro2=padrao): """ Doc String """ return valor
O que
um framework criado em 2007 por Massimo Di Pierro
Foi criado no intuito de ensinar os seus alunos da faculdade
Baseado em vrios frameworks
como
um projeto open source (LGPL v3)
Caractersticas
Framework Full-Stack
No necessrio instalar e configurar para desenvolver
Multiplataforma
Roda em vrios servidores web
Garante a compatibilidade entre as verses
Facilita a internacionalizao da sua aplicao
Suporta herana e incluso de views
Mdulo de Autenticao e permisso de acesso prontos
Segue o padro MVC
Possui um Scaffolding App
Possui um ambiente administrativo
Gerencia a aplicao
Modelos
Controladores (Controllers)
Visualizadores (Views)
Mdulos (Modules)
Plugins
Acesso ao shell do Python
Possui uma administrao de banco de dados
Possvel editar o projeto com um editor web-based
O uso da interface administrativa opcional
Renderiza o contedo em vrios formatos
def hello(): message = "Hello World" return message
Controller bsico
hello/controllers/default.py
Resultado
http://localhost:8000/hello/default/hello
Nomenclatura das URLs
http://localhost:8000/hello/default/hello
http://:/app/controller/action
http://localhost:8000/hello/default/hello/1/2
http://(...)/app/controller/action/arg1/arg2/argN
http://localhost:8000/hello/default/hello?id=1&rg=1234
http://(...)/app/controller/action?var=1&var=2&var=n
def hello(): message = "Hello World" return dict(msg=message)
Enviando contedo para a view
hello/controllers/default.py
{{=msg}}
View bsica
hello/views/default/hello.html
Resultado
http://localhost:8000/hello/default/hello
{{ extend 'layout.html' }}
{{=msg}}
{{ include 'default/outra_msg.html' }}
Adicionando herana e incluso
hello/views/default/hello.html
Resultado
http://localhost:8000/hello/default/hello
Mas e a camada de dados?
DAL
Data Abstraction Layer
DAL uma API que mapeia objetos Python em objetos de banco de dados como queries,tabelas e registros. A DAL gera cdigos SQL dinmicamente em tempo real utilizando sempre o dialeto SQL referente ao banco de dados em uso.
http://web2py.com/book
Comunica com a maioria dos bancos de dados
Pode ser usado em outros frameworks
Abrindo conexo
db = DAL('sqlite://banco.sqlite')
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')
Criando uma tabela
db.define_table('contact', Field('first_name','string',length=50,notnull=True), Field('last_name',length=50), Field('age','integer',default=10) )
Tipos de dados
String
Text
Blob
Boolean
Integer
Double
decimal(n,m)
Date
Time
Datetime
Password
Upload
Referente
List:string
List:integer
List:referente
Relacionamentos
Um para Muitos
db.define_table('group', Field('name','string',length=50) )
db.define_table('contact', Field('name'), Field('group',db.group) )
Relacionamentos
db.define_table('group', Field('name','string',length=50) )
db.define_table('contact', Field('name'))
Muitos para Muitos
db.define_table('role', Field('group_id',db.group), Field('contact_id',db.contact) )
Projetos desenvolvidos em web2py
Campus Online
http://campus.visie.com.br/
Innovare IT
http://innovareit.com
Instant Press
http://instantpress.com
Quebra Link
http://quebralink.algoritmizando.com
Radbox
http://radbox.com
Flisol Inscries
http://inscricoes.flisoldf.blog.br
Flisol Tweets
http://flisoltweets.appspot.com
Mais aplicaes em web2py
http://web2py.com/poweredby
http://web2py.com/appliances
Mais informaes 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
Apresentao disponvel no
http://algoritmizando.com
http://blog.gilsondev.com
http://flisoldf.blog.br
Obrigado a todos!