Gilson Filho e Bruno Barbosa Desenvolvendo aplicações web com Python e Web2Py
Gilson Filho <ul><li>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. </li></ul>@gilsonfilho http://gilsondev.com http://githu...
Bruno Barbosa <ul><li>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; </li></ul>@bruninbsb http://algoritmizando.com http://github.com/bruninbsb
Python Básico
O que é Python? <ul><li>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 </li></ul>
O que é Python? <ul><li>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 </li></ul>
Criada por Guido Van Rossum em 1989
Multiplataforma
O que é Python? <ul><li>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 </li></ul>
O que é Python? <ul><li>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 </li></ul>
Baterias incluídas!!!
O que é Python? <ul><li>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 </li></ul>
O que é Python? <ul><li>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 </li></ul>
Onde é usada?
Exemplos Básicos
Variáveis # -*- coding: utf-8 -*- # Tipagem forte e dinâmica var_int =  11 var_float =  1.1 var_text =  &quot;Isso é uma S...
Lista, Tupla e Dicionários # -*- coding: utf-8 -*- # Lista pode ser alterado lista01 = [ 1 , 2 , 3 ] lista02 = [ 'a' , 'b'...
Estrutura Condicional # -*- coding: utf-8 -*- if   <condicao>: <bloco de código> elif   <condição>:  # Mesma coisa que  el...
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 =  Fals...
Valores booleanos # -*- coding: utf-8 -*- # Os valores abaixam também é do tipo False zero =  0 nulo =  None string_vazia ...
Comentários # Comentário de uma linha # Linha que seta a codificação do arquivo # -*- coding: utf-8 -*- &quot;&quot;&quot;...
Funções # -*- coding: utf-8 -*- def   func (parametro1, parametro2=padrao): &quot;&quot;&quot; Doc String &quot;&quot;&quo...
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
Upcoming SlideShare
Loading in...5
×

Desenvolvendo aplicações web com python e web2py

7,693

Published on

Essa palestra foi ministrada pelo Gilson Filho e

Published in: Technology

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

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

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×