Desenvolvendo aplicações web com python e web2py
Upcoming SlideShare
Loading in...5
×
 

Desenvolvendo aplicações web com python e web2py

on

  • 6,608 views

Essa palestra foi ministrada pelo Gilson Filho e

Essa palestra foi ministrada pelo Gilson Filho e

Statistics

Views

Total Views
6,608
Views on SlideShare
6,349
Embed Views
259

Actions

Likes
4
Downloads
204
Comments
0

6 Embeds 259

http://blog.gilsondev.com 222
http://tdinfor.blogspot.com 28
http://tdinfor.blogspot.com.br 5
http://flisoldf.blog.br 2
http://translate.googleusercontent.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Gilson Filho e Bruno Barbosa Desenvolvendo aplicações web com Python e Web2Py
  • Gilson Filho
    • Programador há 5 anos;
    • Desenvolvimento web há 3 anos;
    • Moderador do GruPy-DF;
    • Usuário linux há 3 anos;
    • Programador Java e Python;
    • Criador do FLISOL Inscriptions;
    • Participante do web2py-developers e equipe de tradução do web2py.
    @gilsonfilho http://gilsondev.com http://github.com/contatogilsonsbf
  • Bruno Barbosa
    • Graduando em Análise 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 tradução do web2py;
    @bruninbsb http://algoritmizando.com http://github.com/bruninbsb
  • Python Básico
  • 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica e forte
  • Baterias incluídas!!!
  • 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica 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 Incluídas
    • Sintaxe elegante simples e clara
    • Tipagem dinâmica e forte
  • Onde é usada?
  • Exemplos Básicos
  • 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 # -*- 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 # -*- 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 # -*- coding: utf-8 -*- for <referência> in <sequência>: <bloco de código> continue break
  • Laços - While # -*- coding: utf-8 -*- while <condição>: <bloco de código> continue break
  • 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 # -*- 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ário de uma linha # Linha que seta a codificação do arquivo # -*- coding: utf-8 -*- &quot;&quot;&quot; Doc String &quot;&quot;&quot;
  • Funções # -*- coding: utf-8 -*- def func (parametro1, parametro2=padrao): &quot;&quot;&quot; Doc String &quot;&quot;&quot; <bloco de código> 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 vários frameworks como
  •  
  • É um projeto open source (LGPL v3)
  • Características
  • Framework Full-Stack
  • Não é necessário instalar e configurar para desenvolver
  • Multiplataforma
  • Roda em vários servidores web
  • Garante a compatibilidade entre as versões
  • Facilita a internacionalização da sua aplicação
  • Suporta herança e inclusão de views
  •  
  • Módulo de Autenticação e permissão de acesso prontos
  • Segue o padrão MVC
  • Possui um Scaffolding App
  • Possui um ambiente administrativo
  • Gerencia a aplicação
  • Modelos
  • Controladores (Controllers)
  • Visualizadores (Views)
  • Módulos (Modules)
  • Plugins
  • Acesso ao shell do Python
  • Possui uma administração de banco de dados
  •  
  •  
  •  
  • Possível editar o projeto com um editor web-based
  • O uso da interface administrativa é opcional
  • Renderiza o conteúdo em vários formatos
  • def hello(): message = &quot;Hello World&quot; return message Controller básico hello/controllers/default.py
  • Resultado http://localhost:8000/hello/default/hello
  • Nomenclatura das URLs http://localhost:8000/ hello / default / hello http://<address>:<port>/ 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 = &quot;Hello World&quot; return dict(msg=message) Enviando conteúdo para a view hello/controllers/default.py
  • < h1 > {{=msg}} < /h1 > View básica hello/views/default/hello.html
  • Resultado http://localhost:8000/hello/default/hello
  • {{ extend 'layout.html' }} < h1 > {{=msg}} < /h1 > {{ include 'default/outra_msg.html' }} Adicionando herança e inclusão 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 códigos SQL dinâmicamente 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 conexão 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 <table>
    • List:string
    • List:integer
    • List:referente <table>
  • 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 Inscrições http://inscricoes.flisoldf.blog.br
  • Flisol Tweets http://flisoltweets.appspot.com
  • Mais aplicações em web2py http://web2py.com/poweredby http://web2py.com/appliances
  • 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
  • Apresentação disponível no http://algoritmizando.com http://blog.gilsondev.com http://flisoldf.blog.br
  • Obrigado a todos!