SlideShare uma empresa Scribd logo
1 de 69
PYTHON NA WEB
APRESENTANDO O WEB2PY
QUEM VOS FALA?
• Profeta em tempo integral
• Entusiasta Python!
• Engenheiro de
Computação pela UEFS
• Aluno regular do mestrado
em Ciência da Computação
pela UFBA
• Maomé ou Mohammed,
vulgo Matheus Cardoso
ESTUDA O QUE?
TRABALHA EM QUE?
TRABALHO:
• Fazendo o cliente feliz!
• Sempre além do
expediente;
• Ouvindo o cliente querer
me pagar menos e
querendo que eu faça
maravilhas!
• Sob pressão: se tudo der
errado a culpa é minha!
E TAMBÉM ME DIVIRTO,
NÉ?
EM TUDO NA MINHA VIDA EU
PROGRAMO!
E EM TODAS ELAS EU USO OU JÁ USEI
PYTHON
O QUE EU VOU FALAR?
• Como usar Python na
web
• Frameworks
• Web2py
COMO USAR PYTHON NA
WEB?
FRAMEWORKS!
MUITOS FRAMEWORKS!!!
TIPOS DE FRAMEWORKS
Micro frameworks Full-stack frameworks
Micro framework
• Se concentra no
essencial
• Foco em simplicidade e
extensibilidade
• MVC
• HTTP Framework
Micro framework
Full-stack frameworks
• Tudo que você precisa está
ali!
• MVC
Full-stack frameworks
QUE FRAMEWORK É ESSE?
• Open source - https://github.com/web2py/web2py
• Database-driven web-applications
• Rápido, extensível e seguro!
• Pythonico!
• Criado em 2007
• Ferramenta de ensino a
programação web
• Velocidade, facilidade e
segurança,
retrocompatibilidade
• "Desenvolver para web
deveria ser fácil!"
Massimo DiPierro - criador do web2py.
Doutor Professor de Ciência da
Computação em Alta Performance e
Computação Científica na Universidade de
DePaul, em Chicago, Illinois.
• O projeto cresceu e
ganhou colaboradores!
• E prêmios!
• Model-View-Controller
(MVC)
• Separação de
interesses
• Não há incorporação
de código em páginas
HTML.
• HTML é gerado
programaticamente
CONTROLLER
MODEL
VIEW
NOTIFY UPDATE
UPDATEUSER ACTION
• Segurança
• 10 maiores problemas
de segurança
• Cross Site Scripting
(XSS)
• SQL Injection
The Open Web Application Security Project (OWASP)
O QUE HÁ NA CAIXA?
Python Interpreter
Apache, Nginx, Lighttpd,
etc.
Rocket web server
core libraries: request, response, session, cache,
helpers, template, forms, i18n, DAL, etc.
Applications
welcome
MVC
appadmin
admin
MVC
appadmin
examples
MVC
appadmin
myapp
MVC
appadmin
model
controllers
views
modules
languages
databases
static files
…
E COMO INSTALAR ISSO?
E SEM CONFIGURAÇÃO!
LINUX MAC OS WINDOWS
WELCOME APP
ADMIN LOGIN
PAINEL
ADMINISTRATIVO
WELCOME APP
WELCOME APP
WELCOME APP
MODELS
MODELS - DAL
• DAL - Database Abstraction
Layer
• Mapeia objetos Python em
objetos do banco
• Queries
• Tabelas
• Registros
• Gera SQL dinamicamente
em tempo real +10
MODELS - DAL
db = DAL('sqlite://storage.db')
db.define_table('mytable', Field('myfield'))
rows = db(db.mytable.myfield !=
None).select()
DAL
Table
Row
Ah, migrations são automáticos! =D
MODELS ++
• Lazy tables
• Validadores
• Banco de dados legados
• Transações distribuídas
• Campos virtuais
• Exportação e importação
de dados (CSV, HTML e
XML)
• Cache de selects
• Herança de tabelas
• Log automático
• E muito mais!
VIEWS
VIEWS
• Código Python embarcado
• Sintaxe Python modificada
• Não precisa identar
• pass é utilizada como delimitador de bloco
• Delimitadores: {{ … }}
VIEWS
<ul>
{{for item in items:}}
<li>{{=item}}</li>
{{pass}}
</ul>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
tems' é uma lista passada por um controller
VIEWS
<ul>
{{while k > 0:}}
<li>{{=k}}{{k = k - 1}}</li>
{{pass}}
</ul>
<ul>
<li>3</li>
<li>2</li>
<li>1</li>
</ul>
ara ‘k’ igual a 3, passado por um controller
VIEWS
Core
Python embarcado
HTML gerado
PAGE LAYOUT
• Views podem estender ou incluir outras
views!
PAGE LAYOUT
<html>
<body>
<div class="sidebar">
{{include}}
</div>
</body>
</html>
{{extend 'layout.html'}}
<h1>Hello World!!!</h1>
<html>
<body>
<div class="sidebar">
<h1> Hello World!!!</h1>
</div>
</body>
</html>extend
PAGE LAYOUT
<html>
<body>
<div class="sidebar">
</div>
{{include footer.html}}
</body>
</html>
<div class="footer">My
Footer</div>
<html>
<body>
<div class="sidebar">
</div>
<div class=“footer">
My Footer
</div>
</body>
</html>include
VIEWS ++
• Blocks
• Functions
• Helpers
• Geradores de HTML
• Server-side DOM
CORE
Controllers
CORE
Requests, responses, sessions, cache, views, DAL, i18n,
cookies, modulos, dispatching, dentre outros
http://hostname/application/controller/function/args?vars
localhost myapp default index
AUTH
AUTH
• Controle de acesso de usuários
• Registro
• Login
• Logout
• Mudança de senha
• Email de confirmação
AUTH
• API’s embutidas
• Gmail
• LinkedIn
• Facebook
• Dropbox
AUTH
• Anotações
• @auth.requires_login()
• @auth.requires_members
hip(‘nome_grupo')
@auth.requires_login()
def list_users():
…
@auth.requires_membership('admin
def list_users():
…
O QUE EU NÃO
MENCIONEI
O QUE EU NÃO MENCIONEI
Forms e validadores
Email e SMSServiços
jQuery e Ajax
Components e plugins
Receitas de deploy
Memcache
Redis
Twitter API Paypal API
SQLDesigner
Ticket Errors
CASES
WEB2CANVAS
http://web2canvas.x4start.com/
GLOBALEAKS
https://globaleaks.org/
FLUXO DE CAIXA
http://fluxodecaixa.com.br/
ONDE APRENDER?
Cursos, livros, tutoriais
ONDE APRENDER?
Livro do web2py web2pyslices web2py cookbook
killer-web-development.com
web2py-users
web2py-users-brazil Vimeo
ONDE APRENDER?
“USE THE SOURCE, LUKE"
ANTES QUE EU ESQUEÇA:
• O Web2py é ótimo!
• Uma incrível opção para aprender
desenvolvimento web!
• Uma fantástica escolha para seu próximo
projeto pessoal ou empresarial!
• Mas…
PERGUNTAS
?
matheus.mcas@gmail.com
@matheuscas
https://github.com/matheuscas
mohammeds.com.br
/matheuscas

Mais conteúdo relacionado

Mais procurados

Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)andreluizlc
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpMiguel Pinto
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarTiago Antônio da Silva
 
Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java scriptandreluizlc
 

Mais procurados (6)

Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
Minicurso Web. Front-end e HTML5 (parte 1)
Minicurso Web. Front-end e HTML5 (parte 1)Minicurso Web. Front-end e HTML5 (parte 1)
Minicurso Web. Front-end e HTML5 (parte 1)
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como Programar
 
Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java script
 

Semelhante a Python na Web - Apresentando o web2py

Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsAndre Baltieri
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesC. Augusto Proiete
 
Turbinando seu workflow com cakePHP
Turbinando seu workflow com cakePHPTurbinando seu workflow com cakePHP
Turbinando seu workflow com cakePHPTiago Matos
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
Best pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobileBest pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobilenipjc
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”pt_programar
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPCarlos Santos
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhosandreandrade17
 

Semelhante a Python na Web - Apresentando o web2py (20)

Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidades
 
Turbinando seu workflow com cakePHP
Turbinando seu workflow com cakePHPTurbinando seu workflow com cakePHP
Turbinando seu workflow com cakePHP
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Best pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobileBest pratices para desenvolvimento mobile
Best pratices para desenvolvimento mobile
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
 

Mais de Matheus Cardoso

"If You know Angular, now You know mobile"
"If You know Angular, now You know mobile" "If You know Angular, now You know mobile"
"If You know Angular, now You know mobile" Matheus Cardoso
 
Angular 2: O que mudou do Angular 1, ES6 e Typescript
Angular 2: O que mudou do Angular 1, ES6 e TypescriptAngular 2: O que mudou do Angular 1, ES6 e Typescript
Angular 2: O que mudou do Angular 1, ES6 e TypescriptMatheus Cardoso
 
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL: INTEGRANDO SISTEMAS...
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL:  INTEGRANDO SISTEMAS...UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL:  INTEGRANDO SISTEMAS...
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL: INTEGRANDO SISTEMAS...Matheus Cardoso
 
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...Matheus Cardoso
 
Ionic: The Web SDK for Develop Mobile Apps.
Ionic: The Web SDK for Develop Mobile Apps.Ionic: The Web SDK for Develop Mobile Apps.
Ionic: The Web SDK for Develop Mobile Apps.Matheus Cardoso
 
Ionic Framework: Let's build amazing apps. No Excuses!
Ionic Framework: Let's build amazing apps. No Excuses!Ionic Framework: Let's build amazing apps. No Excuses!
Ionic Framework: Let's build amazing apps. No Excuses!Matheus Cardoso
 
Mineração de Opiniões e Análise de Sentimentos
Mineração de Opiniões e Análise de SentimentosMineração de Opiniões e Análise de Sentimentos
Mineração de Opiniões e Análise de SentimentosMatheus Cardoso
 

Mais de Matheus Cardoso (8)

"If You know Angular, now You know mobile"
"If You know Angular, now You know mobile" "If You know Angular, now You know mobile"
"If You know Angular, now You know mobile"
 
Angular 2: O que mudou do Angular 1, ES6 e Typescript
Angular 2: O que mudou do Angular 1, ES6 e TypescriptAngular 2: O que mudou do Angular 1, ES6 e Typescript
Angular 2: O que mudou do Angular 1, ES6 e Typescript
 
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL: INTEGRANDO SISTEMAS...
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL:  INTEGRANDO SISTEMAS...UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL:  INTEGRANDO SISTEMAS...
UMA PROPOSTA DE ADOÇÃO DO PRONTUÁRIO ELETRÔNICO PESSOAL: INTEGRANDO SISTEMAS...
 
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...
Aplicação de um sistema fuzzy para classificação de opinião em diferentes dom...
 
Ionic: The Web SDK for Develop Mobile Apps.
Ionic: The Web SDK for Develop Mobile Apps.Ionic: The Web SDK for Develop Mobile Apps.
Ionic: The Web SDK for Develop Mobile Apps.
 
Ionic Framework: Let's build amazing apps. No Excuses!
Ionic Framework: Let's build amazing apps. No Excuses!Ionic Framework: Let's build amazing apps. No Excuses!
Ionic Framework: Let's build amazing apps. No Excuses!
 
PyDojo
PyDojoPyDojo
PyDojo
 
Mineração de Opiniões e Análise de Sentimentos
Mineração de Opiniões e Análise de SentimentosMineração de Opiniões e Análise de Sentimentos
Mineração de Opiniões e Análise de Sentimentos
 

Python na Web - Apresentando o web2py