SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Matheus Lima
github.com/matheussl
fb.com/matheeusLimaaa
matheus.se@gmail.com
Por onde começar?
Desbravando a Web com Python
segunda-feira, 24 de março de 14
Apresentação
• Desenvolvedor web;
• Pythonista há 4 anos;
• matheussl no github;
• Python > Django > Web2py > Flask
segunda-feira, 24 de março de 14
Roteiro
• Python
• Frameworks web
• Fabric
• Estudo de caso
segunda-feira, 24 de março de 14
Pai o que?!
Pyton
Pynton
Phyton
phython
Pithon
Python
segunda-feira, 24 de março de 14
Pai o que?!
Pyton
Pynton
Phyton
phython
Pithon
Python
segunda-feira, 24 de março de 14
Por que Python?
• Linguagem simples e com resultados rápidos.
• Escalável
• Baterias incluídas.
segunda-feira, 24 de março de 14
Baterias incluídas?
import os
print os.path.getsize(__file__), 'bytes'
>>> 50 bytes
segunda-feira, 24 de março de 14
Baterias incluídas?
file = open(__file__)
print file.read()
file.close()
segunda-feira, 24 de março de 14
Só isso?
segunda-feira, 24 de março de 14
Indo um pouco além...
import urllib
import json
from pprint import pprint
url = 'https://graph.facebook.com/matheeusLimaaa'
response = urllib.urlopen(url).read()
data = json.loads(response)
pprint(data)
{u'first_name': u'Matheus',
u'gender': u'male',
u'id': u'100001639854566',
u'last_name': u'Lima',
u'link': u'http://www.facebook.com/MatheeusLimaaa',
u'locale': u'en_US',
u'name': u'Matheus Lima',
u'username': u'MatheeusLimaaa'}
segunda-feira, 24 de março de 14
Um pouco mais...
import urllib2
import json
# https://developers.facebook.com/tools/explorer
graph = 'https://graph.facebook.com/search'
token =
'CAACEdEose0cBACMVnp2DQs3NgZCy1GUS0U1JJvaiMAEr1aD4qmJF5DFL1rc5eYT4HQoU
fo8UeScUZAdMUu2wNIKa2dAwY48ujEeEO792lmn7SLlmdr2YXZAdzPi5JRutETVRfIbDep
ZAEU7XxEHFGPtt8n3AjdsnXQEdvsRDRtVtvJd74M9rAV6oDMuqYgu2N9qYo7lpUgZDZD'
def search(text):
url = '%s?q=%s&type=post&access_token=%s' % (graph, text, token)
response = urllib2.urlopen(url).read()
data = json.loads(response.decode('utf-8'))
return data['data']
for result in search('RuPy Sergipe'):
if 'message' in result:
print '%s: %sn' % (result['from']['name'], result['message'])
segunda-feira, 24 de março de 14
Resultado
Breno Moura: Já fez sua inscrição no RuPy Sergipe?
Inscreva-se pelo site oficial: http://rupysergipe.github.io/
site
ou pelo eventick: http://eventick.com.br/rupy-sergipe
segunda-feira, 24 de março de 14
E o que mais?
• Packages
• easy_install
• pip
• Frameworks
• Django
• Flask
• Pyramid
• Plone
• Deploy
• Fabric
• Heroku
• Webserver
• GUnicorn
segunda-feira, 24 de março de 14
Quem usa Python?
segunda-feira, 24 de março de 14
segunda-feira, 24 de março de 14
O que falam?
• “Python é uma das cinco mais importantes
linguagens que todo programador deve
conhecer” (Bjarne Stroustup, criador do C++)
• “[...] nossa filosofia aqui é “Python sempre que
pudermos, C++ se necessário”” (Alex Martelli, Líder
Técnico, Sistemas de Produção, Google)
segunda-feira, 24 de março de 14
O que falam?
• “Python é rápido o suficiente para nosso
site e nos permite produzir características de fácil
manutenção em tempos recordes, com um mínimo
de desenvolvedores.”
(Cuond Do, Arquiteto de Software,Youtube.com)
segunda-feira, 24 de março de 14
Quero usar Python na web,
por onde começo?
segunda-feira, 24 de março de 14
Frameworks
• Flask
• Web2py
• Django
segunda-feira, 24 de março de 14
Flask
• Micro-famework;
• Poucas linhas de código;
• Surgiu de uma brincadeira;
segunda-feira, 24 de março de 14
Hello Flask!
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
$ python hello.py
* Running on http://127.0.0.1:5000/
segunda-feira, 24 de março de 14
Web2py
• Um pouco mais robusto;
• Interface web de desenvolvimento;
• Simples desde a instalação;
• DAL;
segunda-feira, 24 de março de 14
Django
Django é um framework web de alto nível.
• Escrito em Python
• Estimula o desenvolvimento rápido e
limpo (DjangoProject.com)
segunda-feira, 24 de março de 14
Sim, mas como ele pode
agilizar meus projetos?
segunda-feira, 24 de março de 14
Arquitetura
• Model-Template-View (MTV)
• Foco na regra de negócio
• O template é do designer
segunda-feira, 24 de março de 14
Arquitetura
• URL dispatcher, middlewares e handlers são
do framework!
segunda-feira, 24 de março de 14
Arquitetura de uma app
segunda-feira, 24 de março de 14
Models
• Os models compreendem a camada de
domínio da aplicação
• Numa abordagem botton-up, os models são
feitos primeiro.
segunda-feira, 24 de março de 14
Models
class Person(models.Model):
name = models.CharField(max_length=100)
cpf = models.CharField(max_length=11)
photo = models.ImageField(uploads_to='person/photo')
birth_date = models.DateField(null=True)
active = models.BooleanField()
segunda-feira, 24 de março de 14
Models
• Agora conheceremos um pouco da mágica
do ORM do Django.
segunda-feira, 24 de março de 14
Models
john = Person(
name = 'John',
cpf = '12345678900',
birthday = date(year=1990, month=5, day=28),
)
john.save()
if john.is_birthday:
print 'Congratulations!!'
# activate
john.activate()
john.save()
if john.active:
print 'active user'
else:
print 'inactive user'
segunda-feira, 24 de março de 14
Views
• As views são responsáveis por selecionar os
objetos que serão exibidos e executar
algumas ações
segunda-feira, 24 de março de 14
Views
• Já temos o model “Person”. Agora, como
exibir a lista de pessoas cadastradas?
segunda-feira, 24 de março de 14
Views
def person_list(request):
persons = Person.objects.all()
context = {'perons': persons}
return render(request, 'person_list.html', context)
segunda-feira, 24 de março de 14
Dá trabalho pra publicar?
segunda-feira, 24 de março de 14
$> fab production deploy
Só isso? Como?!
segunda-feira, 24 de março de 14
Fabric
Fabric é uma ferramenta que automatiza
tarefas em servidores remotos.
• Deploy;
• Upload/download;
• Qualquer tarefa;
segunda-feira, 24 de março de 14
MeuEstagio.com
• O site foi reescrito em Django;
• Meu novo recorde: 2h
• Recorde anterior: 4h (web2py)
• Desafio do minicurso!
segunda-feira, 24 de março de 14
segunda-feira, 24 de março de 14
MeuEstagio.com
segunda-feira, 24 de março de 14
Código sem burocracia!
segunda-feira, 24 de março de 14
Dúvidas?
segunda-feira, 24 de março de 14
Matheus Lima
github.com/matheussl
fb.com/matheeusLimaaa
matheus.se@gmail.com
Por onde começar?
Desbravando a Web com Python
segunda-feira, 24 de março de 14

Mais conteúdo relacionado

Mais procurados

A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laBruno Rocha
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonÁlvaro Justen
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonPedro Valente
 
Libertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livresLibertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livresÁlvaro Justen
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonMarinho Brandão
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com PythonÁlvaro Justen
 
[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro JustenÁlvaro Justen
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Dorneles Treméa
 
Software Livre versus Open Source
Software Livre versus Open SourceSoftware Livre versus Open Source
Software Livre versus Open SourceÁlvaro Justen
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Igor Macaubas
 
Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4Dorneles Treméa
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 

Mais procurados (20)

A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Capturando dados com Python - UAI Python
Capturando dados com Python - UAI PythonCapturando dados com Python - UAI Python
Capturando dados com Python - UAI Python
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Libertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livresLibertando dados públicos com ferramentas livres
Libertando dados públicos com ferramentas livres
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Introdução a Programação com Python
Introdução a Programação com PythonIntrodução a Programação com Python
Introdução a Programação com Python
 
Aprendi Python, e agora?
Aprendi Python, e agora?Aprendi Python, e agora?
Aprendi Python, e agora?
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen[FISL17] Liberando dados com um comando, por Álvaro Justen
[FISL17] Liberando dados com um comando, por Álvaro Justen
 
PUG-SE Institucional
PUG-SE InstitucionalPUG-SE Institucional
PUG-SE Institucional
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11
 
Software Livre versus Open Source
Software Livre versus Open SourceSoftware Livre versus Open Source
Software Livre versus Open Source
 
Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?Globo.com - Porque amamos open-source?
Globo.com - Porque amamos open-source?
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4Melhores Práticas para o Desenvolvimento com Plone 4
Melhores Práticas para o Desenvolvimento com Plone 4
 
Tdd com-python
Tdd com-pythonTdd com-python
Tdd com-python
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 

Semelhante a Desbravando a web com python - Matheus Lima

O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/DjangoÁtila Bezerra
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Marco Mendes
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”pt_programar
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...Wildtech
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Jerônimo Medina Madruga
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSprofjotamarcosduarte
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneFabiano Weimar
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Thiago Barros, PSM
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e MemcacheAndre Golvea
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine LearningMarcelo Oliveira
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 

Semelhante a Desbravando a web com python - Matheus Lima (20)

SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Powershell “à minha maneira”
Powershell “à minha maneira”Powershell “à minha maneira”
Powershell “à minha maneira”
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Introducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo PloneIntroducao ao sistema de gerenciamento de conteúdo Plone
Introducao ao sistema de gerenciamento de conteúdo Plone
 
Apresentacao artigo final
Apresentacao artigo finalApresentacao artigo final
Apresentacao artigo final
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
 
Apresentação do grupo PHPMS
Apresentação do grupo PHPMSApresentação do grupo PHPMS
Apresentação do grupo PHPMS
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
PHP, Gearman e Memcache
PHP, Gearman e MemcachePHP, Gearman e Memcache
PHP, Gearman e Memcache
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 

Desbravando a web com python - Matheus Lima

  • 1. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa matheus.se@gmail.com Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14
  • 2. Apresentação • Desenvolvedor web; • Pythonista há 4 anos; • matheussl no github; • Python > Django > Web2py > Flask segunda-feira, 24 de março de 14
  • 3. Roteiro • Python • Frameworks web • Fabric • Estudo de caso segunda-feira, 24 de março de 14
  • 6. Por que Python? • Linguagem simples e com resultados rápidos. • Escalável • Baterias incluídas. segunda-feira, 24 de março de 14
  • 7. Baterias incluídas? import os print os.path.getsize(__file__), 'bytes' >>> 50 bytes segunda-feira, 24 de março de 14
  • 8. Baterias incluídas? file = open(__file__) print file.read() file.close() segunda-feira, 24 de março de 14
  • 9. Só isso? segunda-feira, 24 de março de 14
  • 10. Indo um pouco além... import urllib import json from pprint import pprint url = 'https://graph.facebook.com/matheeusLimaaa' response = urllib.urlopen(url).read() data = json.loads(response) pprint(data) {u'first_name': u'Matheus', u'gender': u'male', u'id': u'100001639854566', u'last_name': u'Lima', u'link': u'http://www.facebook.com/MatheeusLimaaa', u'locale': u'en_US', u'name': u'Matheus Lima', u'username': u'MatheeusLimaaa'} segunda-feira, 24 de março de 14
  • 11. Um pouco mais... import urllib2 import json # https://developers.facebook.com/tools/explorer graph = 'https://graph.facebook.com/search' token = 'CAACEdEose0cBACMVnp2DQs3NgZCy1GUS0U1JJvaiMAEr1aD4qmJF5DFL1rc5eYT4HQoU fo8UeScUZAdMUu2wNIKa2dAwY48ujEeEO792lmn7SLlmdr2YXZAdzPi5JRutETVRfIbDep ZAEU7XxEHFGPtt8n3AjdsnXQEdvsRDRtVtvJd74M9rAV6oDMuqYgu2N9qYo7lpUgZDZD' def search(text): url = '%s?q=%s&type=post&access_token=%s' % (graph, text, token) response = urllib2.urlopen(url).read() data = json.loads(response.decode('utf-8')) return data['data'] for result in search('RuPy Sergipe'): if 'message' in result: print '%s: %sn' % (result['from']['name'], result['message']) segunda-feira, 24 de março de 14
  • 12. Resultado Breno Moura: Já fez sua inscrição no RuPy Sergipe? Inscreva-se pelo site oficial: http://rupysergipe.github.io/ site ou pelo eventick: http://eventick.com.br/rupy-sergipe segunda-feira, 24 de março de 14
  • 13. E o que mais? • Packages • easy_install • pip • Frameworks • Django • Flask • Pyramid • Plone • Deploy • Fabric • Heroku • Webserver • GUnicorn segunda-feira, 24 de março de 14
  • 14. Quem usa Python? segunda-feira, 24 de março de 14
  • 15. segunda-feira, 24 de março de 14
  • 16. O que falam? • “Python é uma das cinco mais importantes linguagens que todo programador deve conhecer” (Bjarne Stroustup, criador do C++) • “[...] nossa filosofia aqui é “Python sempre que pudermos, C++ se necessário”” (Alex Martelli, Líder Técnico, Sistemas de Produção, Google) segunda-feira, 24 de março de 14
  • 17. O que falam? • “Python é rápido o suficiente para nosso site e nos permite produzir características de fácil manutenção em tempos recordes, com um mínimo de desenvolvedores.” (Cuond Do, Arquiteto de Software,Youtube.com) segunda-feira, 24 de março de 14
  • 18. Quero usar Python na web, por onde começo? segunda-feira, 24 de março de 14
  • 19. Frameworks • Flask • Web2py • Django segunda-feira, 24 de março de 14
  • 20. Flask • Micro-famework; • Poucas linhas de código; • Surgiu de uma brincadeira; segunda-feira, 24 de março de 14
  • 21. Hello Flask! from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() $ python hello.py * Running on http://127.0.0.1:5000/ segunda-feira, 24 de março de 14
  • 22. Web2py • Um pouco mais robusto; • Interface web de desenvolvimento; • Simples desde a instalação; • DAL; segunda-feira, 24 de março de 14
  • 23. Django Django é um framework web de alto nível. • Escrito em Python • Estimula o desenvolvimento rápido e limpo (DjangoProject.com) segunda-feira, 24 de março de 14
  • 24. Sim, mas como ele pode agilizar meus projetos? segunda-feira, 24 de março de 14
  • 25. Arquitetura • Model-Template-View (MTV) • Foco na regra de negócio • O template é do designer segunda-feira, 24 de março de 14
  • 26. Arquitetura • URL dispatcher, middlewares e handlers são do framework! segunda-feira, 24 de março de 14
  • 27. Arquitetura de uma app segunda-feira, 24 de março de 14
  • 28. Models • Os models compreendem a camada de domínio da aplicação • Numa abordagem botton-up, os models são feitos primeiro. segunda-feira, 24 de março de 14
  • 29. Models class Person(models.Model): name = models.CharField(max_length=100) cpf = models.CharField(max_length=11) photo = models.ImageField(uploads_to='person/photo') birth_date = models.DateField(null=True) active = models.BooleanField() segunda-feira, 24 de março de 14
  • 30. Models • Agora conheceremos um pouco da mágica do ORM do Django. segunda-feira, 24 de março de 14
  • 31. Models john = Person( name = 'John', cpf = '12345678900', birthday = date(year=1990, month=5, day=28), ) john.save() if john.is_birthday: print 'Congratulations!!' # activate john.activate() john.save() if john.active: print 'active user' else: print 'inactive user' segunda-feira, 24 de março de 14
  • 32. Views • As views são responsáveis por selecionar os objetos que serão exibidos e executar algumas ações segunda-feira, 24 de março de 14
  • 33. Views • Já temos o model “Person”. Agora, como exibir a lista de pessoas cadastradas? segunda-feira, 24 de março de 14
  • 34. Views def person_list(request): persons = Person.objects.all() context = {'perons': persons} return render(request, 'person_list.html', context) segunda-feira, 24 de março de 14
  • 35. Dá trabalho pra publicar? segunda-feira, 24 de março de 14
  • 36. $> fab production deploy Só isso? Como?! segunda-feira, 24 de março de 14
  • 37. Fabric Fabric é uma ferramenta que automatiza tarefas em servidores remotos. • Deploy; • Upload/download; • Qualquer tarefa; segunda-feira, 24 de março de 14
  • 38. MeuEstagio.com • O site foi reescrito em Django; • Meu novo recorde: 2h • Recorde anterior: 4h (web2py) • Desafio do minicurso! segunda-feira, 24 de março de 14
  • 39. segunda-feira, 24 de março de 14
  • 43. Matheus Lima github.com/matheussl fb.com/matheeusLimaaa matheus.se@gmail.com Por onde começar? Desbravando a Web com Python segunda-feira, 24 de março de 14