Desenvolvendo aplicações web com python e web2py

download Desenvolvendo aplicações web com python e web2py

If you can't read please download the document

Transcript of Desenvolvendo aplicações web com python e web2py

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!