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

Python na Web - Apresentando o web2py