O documento apresenta o framework web Python Web2py. Discute como o Web2py permite desenvolver aplicações web usando Python de forma rápida e segura através de seus recursos como models, views e controllers, banco de dados abstraído, autenticação integrada e deploy simplificado. O documento também lista outros frameworks web Python e onde aprender mais sobre o Web2py.
2. 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
6. 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!
21. • Open source - https://github.com/web2py/web2py
• Database-driven web-applications
• Rápido, extensível e seguro!
• Pythonico!
22. • 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.
23. • O projeto cresceu e
ganhou colaboradores!
• E prêmios!
24. • 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
25. • Segurança
• 10 maiores problemas
de segurança
• Cross Site Scripting
(XSS)
• SQL Injection
The Open Web Application Security Project (OWASP)
38. MODELS - DAL
• DAL - Database Abstraction
Layer
• Mapeia objetos Python em
objetos do banco
• Queries
• Tabelas
• Registros
• Gera SQL dinamicamente
em tempo real +10
39. 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
40. 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!
42. VIEWS
• Código Python embarcado
• Sintaxe Python modificada
• Não precisa identar
• pass é utilizada como delimitador de bloco
• Delimitadores: {{ … }}
43. 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
44. 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
57. 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
66. 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…