desbravando a web com python - matheus lima
Post on 18-Dec-2014
278 Views
Preview:
DESCRIPTION
TRANSCRIPT
Matheus Limagithub.com/matheusslfb.com/matheeusLimaaamatheus.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 osprint 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 urllibimport jsonfrom 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 urllib2import json # https://developers.facebook.com/tools/explorergraph = 'https://graph.facebook.com/search'token = 'CAACEdEose0cBACMVnp2DQs3NgZCy1GUS0U1JJvaiMAEr1aD4qmJF5DFL1rc5eYT4HQoUfo8UeScUZAdMUu2wNIKa2dAwY48ujEeEO792lmn7SLlmdr2YXZAdzPi5JRutETVRfIbDepZAEU7XxEHFGPtt8n3AjdsnXQEdvsRDRtVtvJd74M9rAV6oDMuqYgu2N9qYo7lpUgZDZD'
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: %s\n' % (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 Flaskapp = 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
Modelsjohn = 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 Limagithub.com/matheusslfb.com/matheeusLimaaamatheus.se@gmail.com
Por onde começar?
Desbravando a Web com Python
segunda-feira, 24 de março de 14
top related