Desenvolvendo aplicações web com python e web2py

  • 6,576 views
Uploaded on

Essa palestra foi ministrada pelo Gilson Filho e

Essa palestra foi ministrada pelo Gilson Filho e

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,576
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
227
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Gilson Filho e Bruno Barbosa Desenvolvendo aplicações web com Python e Web2Py
  • 2. Gilson Filho
    • Programador há 5 anos;
    • 3. Desenvolvimento web há 3 anos;
    • 4. Moderador do GruPy-DF;
    • 5. Usuário linux há 3 anos;
    • 6. Programador Java e Python;
    • 7. Criador do FLISOL Inscriptions;
    • 8. Participante do web2py-developers e equipe de tradução do web2py.
    @gilsonfilho http://gilsondev.com http://github.com/contatogilsonsbf
  • 9. Bruno Barbosa
    • Graduando em Análise e Desenvolvimento de Sistemas;
    • 10. Programador Python, Desenvolvedor Web – web2py, Plone;
    • 11. Criador do Quebra Link;
    • 12. Criador do FLISOL Inscriptions;
    • 13. Moderador do GruPy-DF;
    • 14. Membro da equipe de tradução do web2py;
    @bruninbsb http://algoritmizando.com http://github.com/bruninbsb
  • 15. Python Básico
  • 16. O que é Python?
    • Interpretada
    • 17. Very High Level Language
    • 18. Criada por Guido Van Rossum em 1989
    • 19. Multiplataforma
    • 20. Orientada a Objetos, procedural e funcional
    • 21. Software Livre
    • 22. Baterias Incluídas
    • 23. Sintaxe elegante simples e clara
    • 24. Tipagem dinâmica e forte
  • 25. O que é Python?
    • Interpretada
    • 26. Very High Level Language
    • 27. Criada por Guido Van Rossum em 1989
    • 28. Multiplataforma
    • 29. Orientada a Objetos, procedural e funcional
    • 30. Software Livre
    • 31. Baterias Incluídas
    • 32. Sintaxe elegante simples e clara
    • 33. Tipagem dinâmica e forte
  • 34. Criada por Guido Van Rossum em 1989
  • 35. Multiplataforma
  • 36. O que é Python?
    • Interpretada
    • 37. Very High Level Language
    • 38. Criada por Guido Van Rossum em 1989
    • 39. Multiplataforma
    • 40. Orientada a Objetos, procedural e funcional
    • 41. Software Livre
    • 42. Baterias Incluídas
    • 43. Sintaxe elegante simples e clara
    • 44. Tipagem dinâmica e forte
  • 45. O que é Python?
    • Interpretada
    • 46. Very High Level Language
    • 47. Criada por Guido Van Rossum em 1989
    • 48. Multiplataforma
    • 49. Orientada a Objetos, procedural e funcional
    • 50. Software Livre
    • 51. Baterias Incluídas
    • 52. Sintaxe elegante simples e clara
    • 53. Tipagem dinâmica e forte
  • 54. Baterias incluídas!!!
  • 55. O que é Python?
    • Interpretada
    • 56. Very High Level Language
    • 57. Criada por Guido Van Rossum em 1989
    • 58. Multiplataforma
    • 59. Orientada a Objetos, procedural e funcional
    • 60. Software Livre
    • 61. Baterias Incluídas
    • 62. Sintaxe elegante simples e clara
    • 63. Tipagem dinâmica e forte
  • 64. O que é Python?
    • Interpretada
    • 65. Very High Level Language
    • 66. Criada por Guido Van Rossum em 1989
    • 67. Multiplataforma
    • 68. Orientada a Objetos, procedural e funcional
    • 69. Software Livre
    • 70. Baterias Incluídas
    • 71. Sintaxe elegante simples e clara
    • 72. Tipagem dinâmica e forte
  • 73. Onde é usada?
  • 74. Exemplos Básicos
  • 75. 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)
  • 76. 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' }
  • 77. 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>
  • 78. Laços - For # -*- coding: utf-8 -*- for <referência> in <sequência>: <bloco de código> continue break
  • 79. Laços - While # -*- coding: utf-8 -*- while <condição>: <bloco de código> continue break
  • 80. 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.'
  • 81. 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.'
  • 82. 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;
  • 83. Funções # -*- coding: utf-8 -*- def func (parametro1, parametro2=padrao): &quot;&quot;&quot; Doc String &quot;&quot;&quot; <bloco de código> return valor
  • 84. O que é
  • 85. É um framework criado em 2007 por Massimo Di Pierro
  • 86. Foi criado no intuito de ensinar os seus alunos da faculdade
  • 87. Baseado em vários frameworks como
  • 88.  
  • 89. É um projeto open source (LGPL v3)
  • 90. Características
  • 91. Framework Full-Stack
  • 92. Não é necessário instalar e configurar para desenvolver
  • 93. Multiplataforma
  • 94. Roda em vários servidores web
  • 95. Garante a compatibilidade entre as versões
  • 96. Facilita a internacionalização da sua aplicação
  • 97. Suporta herança e inclusão de views
  • 98.  
  • 99. Módulo de Autenticação e permissão de acesso prontos
  • 100. Segue o padrão MVC
  • 101. Possui um Scaffolding App
  • 102. Possui um ambiente administrativo
  • 103. Gerencia a aplicação
  • 104. Modelos
  • 105. Controladores (Controllers)
  • 106. Visualizadores (Views)
  • 107. Módulos (Modules)
  • 108. Plugins
  • 109. Acesso ao shell do Python
  • 110. Possui uma administração de banco de dados
  • 111.  
  • 112.  
  • 113.  
  • 114. Possível editar o projeto com um editor web-based
  • 115. O uso da interface administrativa é opcional
  • 116. Renderiza o conteúdo em vários formatos
  • 117. def hello(): message = &quot;Hello World&quot; return message Controller básico hello/controllers/default.py
  • 118. Resultado http://localhost:8000/hello/default/hello
  • 119. Nomenclatura das URLs http://localhost:8000/ hello / default / hello http://<address>:<port>/ app / controller / action
  • 120. http://localhost:8000/ hello / default / hello/ 1 / 2 http://(...)/ app / controller / action/ arg1 / arg2 / argN
  • 121. http://localhost:8000/ hello / default / hello ? id=1 & rg=1234 http://(...)/ app / controller / action ? var=1 & var=2 & var=n
  • 122. def hello(): message = &quot;Hello World&quot; return dict(msg=message) Enviando conteúdo para a view hello/controllers/default.py
  • 123. < h1 > {{=msg}} < /h1 > View básica hello/views/default/hello.html
  • 124. Resultado http://localhost:8000/hello/default/hello
  • 125. {{ extend 'layout.html' }} < h1 > {{=msg}} < /h1 > {{ include 'default/outra_msg.html' }} Adicionando herança e inclusão hello/views/default/hello.html
  • 126. Resultado http://localhost:8000/hello/default/hello
  • 127. Mas e a camada de dados?
  • 128. DAL Data Abstraction Layer
  • 129. “ 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
  • 130. Comunica com a maioria dos bancos de dados
  • 131. Pode ser usado em outros frameworks
  • 132. Abrindo conexão db = DAL( 'sqlite://banco.sqlite' )
  • 133. 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' )
  • 134. 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 ) )
  • 135. Tipos de dados
  • 150. Relacionamentos Um para Muitos db.define_table( 'group' , Field( 'name' , 'string' ,length= 50 ) ) db.define_table( 'contact' , Field( 'name' ), Field( 'group' , db.group ) )
  • 151. 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 ) )
  • 152. Projetos desenvolvidos em web2py
  • 153. Campus Online http://campus.visie.com.br/
  • 154. Innovare IT http://innovareit.com
  • 155. Instant Press http://instantpress.com
  • 156. Quebra Link http://quebralink.algoritmizando.com
  • 157. Radbox http://radbox.com
  • 158. Flisol Inscrições http://inscricoes.flisoldf.blog.br
  • 159. Flisol Tweets http://flisoltweets.appspot.com
  • 160. Mais aplicações em web2py http://web2py.com/poweredby http://web2py.com/appliances
  • 161. 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
  • 162. Apresentação disponível no http://algoritmizando.com http://blog.gilsondev.com http://flisoldf.blog.br
  • 163. Obrigado a todos!