SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
Cherrypy - um framework
para desenvolvimento
rápido de aplicações web
Sematec 2015
Instrutores:
Álvaro Oliveira e André Pereira
Roteiro
 Breve Histórico
 Características
 Por que Python?
 Quem Usa?
 Como Usar?
Breve Histórico
 Linguagem Criada em 1990, Por Guido van
Rossun
 Foco em usuários como físicos e engenheiros
 Python foi concebida através de uma
linguagem chamada ABC.
Características
 Linguagem Interpretada
 Tipagem dinâmica
 Controle de Bloco é feita por indentação
 Oferece tipos de alto nível
 E orientado a objetos
 Fácil aprendizado
 Open Source
 Biblioteca padrão muito rica
Características
 Multiplataforma:
Linux/Unix, Windows, Symbian, MacOSX, etc
 Multiparadigma:
Procedural, Orientado a Objetos e Funcional
Por que Python?
 Os conceitos fundamentais da linguagem são simples de entender;
 A sintaxe do Python é clara e fácil de aprender;
 Os tipos pré-definidos em Python são poderosos e simples de usar;
 O interpretador Python permite aprender e testar rapidamente
trechos de código
 Python é expressivo, com abstrações de alto nível => código curto e
rápido desenvolvimento
Por que Python?
 Prototipação rápida
 Desenvolvimento Web
 Acesso a banco de dados
 Código “enxuto”!
 Computação numérica e científica
 Jogos
 3D
Quem Usa?
 Google (aplicações Web).
 Yahoo (aplicações Web).
 Microsoft (IronPython: Python para .NET).
 Nokia (disponível para as linhas recentes de celulares e
PDAs).
 Disney (animações 3D).
 Funceme(aplicações com Radares)
 Mais casos:
http://www.python.org/about/success/
Como Usar?
 Nas linguagens Interpretadas é executada utilizando o
interpretador lê o código fonte e  interpreta diretamente,
durante a sua execução.
 Tanto pode utilizar no Shell ou Uma IDE
Instalando
Instalando
 Entre no link http://www.python.org/getit/ e baixe
para sua plataforma.
 No windows: clique duas vezes, next, next, … e finish.
 No linux: qualquer distribuíção já vem com Python!
IDE Disponíveis
 Idle :
 Já vem com o Python. É bem simples de ser usado.
 Komodo-Edit:
 E uma excelente opção de editor, bastante rico em recursos tais como
autocomplete, multi-language e outros.
 Eclipse:
 Ideal para desenvolvimento Java. Mas existem plugins para se desenvolver em
Python.
 Pycham:
 E proprietário, Possui um conjunto de ferramentas úteis para um
desenvolvimento produtivo.
Utilizando o Shell no LINUX
 Para chamar o interpretador Python apenas digite “python” no
prompt do shell:
 Quando o shell é iniciado aparecerão três ‘>’ (“>>>”) indicando que
ele está ativo e pode receber comandos
$ python
Python 2.5.1 (r251:54863, Sep 4 2007, 19:00:19)
[GCC 4.1.2] on linux2
Type "help", "copyright", "credits" or "license" for
more information.
>>>
$ python
Python 2.5.1 (r251:54863, Sep 4 2007, 19:00:19)
[GCC 4.1.2] on linux2
Type "help", "copyright", "credits" or "license" for
more information.
>>>
Utilizando o IDLE
 Acessar IDLE, depois em file e New File
(ctrl + n), abrindo o editor para
desenvolver o programa .
Meu Primeiro Programa
Mostrando o Python.
Matando o Java e...
Saida
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Print “Hello, World!”Print “Hello, World!”
JAVA
Python
Saída
 Salvar com a extensão .py
Exemplo: alomundo.py
 Entre na pasta que está o arquivo
cd nomedapasta
 Em seguida, rodar o comando:
python alomundo.py
 No IDLE
 Para salvar, file e save (Ctrl+S)
e com extensão .py
Em seguida em Run, para
rodar o programa.
 No Shell
Definições de Variáveis
 Sintaxe
nomeDaVariavel = valorAtribuido
 Descobrir o tipo atual de uma variável, utiliza a função type()
 type(nome)
nome = “python” #String
num = 1 # valor inteiro
preco = 10.99 # valor ponto flutuante
t = True # valor booleano
nome = “python” #String
num = 1 # valor inteiro
preco = 10.99 # valor ponto flutuante
t = True # valor booleano
Entrada
 Sintaxe:
nomeDaVariavel = input(’Texto para Saída’)
 Para capturar informações do usuário podemos usar duas
funções:
input(“mensagem”)
Espera que o usuários digite comandos ou
valores
raw_input(“mensagem”)
Espera strings
input(“mensagem”)
Espera que o usuários digite comandos ou
valores
raw_input(“mensagem”)
Espera strings
Delimitações
 Uso de “;” no fim de comandos não é obrigatório
 Blocos delimitados por indentação
def soma(a):
. . . .return a+1
print soma(10)
def soma(a):
. . . .return a+1
print soma(10)
Não é um erro
sintático, mas é
desnecessário
e portanto
deselegante
Comentários
 Comentários de são feitos usando ‘#’
 Para comentários de bloco pode-se usar string multilinhas com
‘”””’
“”” def inc(a):
. . . .return a+1”””
#print inc(10)
“”” def inc(a):
. . . .return a+1”””
#print inc(10)
Codificação do Arquivo
 A codificação é necessário para suportar caracteres que não fazem
parte da linguagem inglesa, no código fonte do programa
 o texto “#-*- coding: <encoding> -*#-” no inicio do arquivo, no
qual <encoding> é a codificação do arquivo (geralmente latin1 ou
utf-8)
#!/usr/bin/env python
#-*-coding:utf-8-*-
#!/usr/bin/env python
#-*-coding:utf-8-*-
Indica o caminho
para o
interpretador
usado em
sistemas UNIX
Indica o caminho
para o
interpretador
usado em
sistemas UNIX
Importando Módulos Externos
 Existe duas Forma de Importar Módulos externos:
 Pelo comando import:
 Pelo comando from:
import <modulo>
from<modulo>import <moduloespecifico>
Exercício:
1.Faça um programa que leia da entrada padrão um
número, em seguida imprima ele na tela.
2.Agora faça um programa que leia dois números e em
seguida imprime o resultado da multiplicação deles
Controle de Fluxo
 Nada de parênteses! Nada de chaves!
 IF
if <condição>:
<bloco de código>
elif <condição>:
<bloco de código>
else:
<bloco de código>
if <condição>:
<bloco de código>
elif <condição>:
<bloco de código>
else:
<bloco de código>
Usando If
#! /usr/bin/python
# -*- coding: iso-8859-1 -*-
x = input("Entre com um numero inteiro: ")
if x < 0:
print 'Numero negativo'
elif x == 0:
print 'Zero'
elif x == 1:
print 'Um'
else:
print 'Numero positivo'
#! /usr/bin/python
# -*- coding: iso-8859-1 -*-
x = input("Entre com um numero inteiro: ")
if x < 0:
print 'Numero negativo'
elif x == 0:
print 'Zero'
elif x == 1:
print 'Um'
else:
print 'Numero positivo'
Controle de Fluxo
 O loop While, tem como função repetir um bloco de
comando ate que aconteça uma parada.
while expressão2:
Comando3
...
Controle de Fluxo
 O for em Python podemos “varrer” uma sequencia que se difere
de outra linguagens por ser utilizado como iterador de progressão
aritmética.
for variavel in rage(ni,nf-1):
Cria uma lista a partir do
inteiro ni até o inteiro nf-1
Cria uma lista a partir do
inteiro ni até o inteiro nf-1
for variavel in lista
Exemplo for
for contador in range(1,6):
print contador
1
2
3
4
5
1
2
3
4
5
Estrutura de Dados: Listas [ ]
 É uma sequência de valores indexadas por um inteiro. Uma lista
pode conter qualquer tipo de valor, incluindo valores de tipos
mistos.
numeros = [1, 2, 3]
nomes = [ 'alberto', 'carlos', 'simone' ]
misto = [ 1,2,'alberto',3.5,'simone' ]
listas = [ numeros, nomes, misto ]
Estrutura de Dados: Listas [ ]
 Os elementos da lista podem ser acessados por meio de índices que
vão de 0 até o comprimento da lista-1
lista = [ ‘maria’,’paulo’,’jose’,’carlos’]
00 11 22 33
>>> lista [0]
maria
>>> lista [0]
maria
Estrutura de Dados: Listas [ ]
 Fatias, ou slices, de uma lista podem ser geradas
facilmente com o “:”
 Lista = [inicio:final]
>>> n = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ]
>>> n[2:4]
[3, 4]
Estrutura de Dados: Listas [ ]
 Métodos Uteis
11
22
44
33
00
11
22
33
lista.extend(lista2)lista.append(8)
lista.pop()
lista.remove(2)
Exercício:
1.Faça um programa que leia da entrada padrão um
número, em seguida adicione e imprima a lista .
2.Seguindo o exemplo anterior:
 Crie uma nova lista e adicione na lista anterior;
 Remova um elemento na Posição 4;
 Imprima toda a lista;
Python: Orientado a
Objetos
Python: Orientado a Objeto
“Orientação a objetos, OO, é um termo que descreve uma série de
técnicas para estruturar soluções para problemas computacionais.
é um paradigma de programação no qual um programa e
estruturado em objetos, e que enfatiza os aspectos abstração,
encapsulamento, polimorfismo e herança.”
E tudo é um Objeto
Tudo em Python é no fim um objeto!
list3.append(‘a’)
Novos objetos (classes) podem ser facilmente adicionados
aos tipos de dados já existentes em Python!
De fato, programar em Python é normalmente feito de
forma orientado a objetos!
Definição de uma Classe
 A forma mais simples de definição de uma classe pode ser
descrita dessa maneira:
>>> class NomeDaClasse:
<comando-1>
.
.
.
<comando-N>
>>> class NomeDaClasse:
<comando-1>
.
.
.
<comando-N>
Definição de um Metodo
 Utiliza o comando def, para definir um método de uma
classe:
>>> class HelloMundo:
def alomundo(self):
print “Ola Mundo“
>>> class HelloMundo:
def alomundo(self):
print “Ola Mundo“
Instanciando uma Classe
 Quando criamos a classe HelloMundo, criamos um novo
tipo de dado. Os membros deste novo tipo são chamados
instâncias deste tipo ou objetos. Criar uma nova instância
é instanciar. Para instanciar o objeto HelloMundo:
...
alo=HelloMundo()
alo.alomundo()
...
alo=HelloMundo()
alo.alomundo()
Definição de uma Classe
 Exemplo:
class HelloMundo: #Definindo a Classe
def alomundo(self): #Definindo o Método
print “Ola Mundo“
alo=HelloMundo() #criando uma instância da classe
alo.alomundo()
Definição da Classe
 Privados
 Atributos e métodos que só podem ser acessados
 dentro da classe, usa-se “__” no início do nome
 Protected
 Apenas convenção e usa-se apenas um “_” no
 nome de métodos ou atributos, ex. _telefone
class musica:
_compositor=“Luiz Gonzaga”
__ritmo=“Baiao”
m=musica()
m._compositor
Definição da Classe
class Contador(object):
def __init__(this):
this.contagem = {}
def incluir(this, item):
qtd = this.contagem.get(item, 0) + 1
this.contagem[item] = qtd
def contar(this, item):
return this.contagem[item]
Definição da Classe
class Contador(object):
def __init__(this):
this.contagem = {}
def incluir(this, item):
qtd = this.contagem.get(item, 0) + 1
this.contagem[item] = qtd
def contar(this, item):
return this.contagem[item]
Em Python
Não Usamos
this
Em Python
Não Usamos
this
Definição da Classe
class Contador(object):
def __init__(self):
self.contagem = {}
def incluir(self, item):
qtd = self.contagem.get(item, 0) + 1
self.contagem[item] = qtd
def contar(self, item):
return self.contagem[item]
Usamos
self
Usamos
self
Argumento do Método self
• Em todos métodos associados à instância definido dentro
de uma classe devem ter o argumento self definido como
primeiro argumento.
• Maior flexibilidade na chamada de métodos.
• É a referência para a própria instância da classe
• Mesmo que você tem um método que não recebe nenhum
argumento, ainda assim você deve definir que este tenha o
argumento self.
Construtor __init__( )
 é um método especial que é invocado automaticamente
quando um novo objeto é criado e que inicializa os
atributos deste objetos.
 E opcional!
class Hello:
def _init_ (self,nome):
self.nome = nome
Definição da Classe
Herança
 Uma classe pode herdar a definição de outra classe
 Python não tem a palavra ‘extends’ como em Java
 A Herança multipla é suportada
SuperClasse
SubClasse SubClasse
Exemplo Herança
 Para definir uma subclasse, coloque o nome da superclasse entre
parênteses depois do nome da subclasse na primeira linha da
definição.
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
_numRodas=4
gol = Carro()
gol.andar()
Sobrecarga
Redefinição de métodos já existente, com o
mesmo nome.
Quando um método da classe pai é redefinido na
classe filha
 Diz-se que o método foi sobrecarregado
(overloaded)
Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
print ' Andei de Carro'
gol = Carro()
gol.andar()
Andei de
Carro
Andei de
Carro
Redefinindo Métodos
class Veiculo:
def andar(self):
print "Andei"
class Carro(Veiculo):
def andar(self):
Veiculo.andar(self)
gol = Carro()
gol.andar()
Você pode chamar
o método da
superclasse
Você pode chamar
o método da
superclasse
Redefinindo Métodos
 Você pode redefinir métodos declarados na superclasse
O mesmo vale para o método __init__ .
No método __init__ das subclasses:
parentClass.__init__(self,x,y)
 onde parentClass é o nome da classe pai.
Redefinindo Métodos
class Veiculo:
def __init__(self,numPassageiros):
self.numPassageiros = numPassageiros
def andar(self):
print "Andei"
class Carro(Veiculo):
_numRodas= None
def __init__(self, _numRodas,numPassageiros):
Veiculo. __init__(self,numPassageiros)
self._numRodas= _numRodas
def qtdPassageiros(self):
print self.numPassageiros
gol = Carro(4,6)
gol.qtdPassageiros()
class Veiculo:
def __init__(self,numPassageiros):
self.numPassageiros = numPassageiros
def andar(self):
print "Andei"
class Carro(Veiculo):
_numRodas= None
def __init__(self, _numRodas,numPassageiros):
Veiculo. __init__(self,numPassageiros)
self._numRodas= _numRodas
def qtdPassageiros(self):
print self.numPassageiros
gol = Carro(4,6)
gol.qtdPassageiros()
Construtor da
classe filha tem
que chamar o
da
classe pai
Herança
Polimorfismo
 Polimorfismo literalmente significa várias formas.
 Em Python, um método é polimórfico se ele tem
diferentes implementações numa família de classes
 Ex:
 O operador ‘+’ é polimórfico !
se refere a diferentes operações quando usado, por exemplo, em
inteiros e strings
Exemplo Polimorfismo
class Mamifero:
def som(self):
print 'emitir um som'
class Homem(Mamifero):
def som(self):
print ' Oi'
class Cachorro(Mamifero):
def som(self):
print ' Wuff ! Wuff'
class Gato(Mamifero):
def som(self):
print ' Meaww'
mamifero = Mamifero()
mamifero.som()
animais = [ Homem(),Cachorro(),Gato()]
for animal in animais:
animal.som()
Exercício
Crie uma Classe Chamada Conta Corrente,
declarando o construtor com atributo numero e o
método creditar() e debitar()
 Crie uma Classe Poupança tendo como atributo taxaDeJuros e
com o metodo renderJuros(), que herda de Conta Corrente e
Exercício
Exercício
Python Para
Web:
Cherrypy
Características
 Uma simples e poderosa biblioteca do Python
 Um framework Python orientada a objetos web.
 Pacote auto-contido, só necessita do Python
 Não intrusivo
 Já vem com Servidor web
 Separa o código do layout do HTML
 É Gratis
Por que Cherrypy
 Tem uma interface limpa;
  É muito pythônico; ou seja, ele segue as convenções do
Python muito bem (código é escassa e não poluente);
 Maturidade, tem muitas versões estáveis finais;
 Tem uma comunidade dedicada que desenvolve
aplicativos implementados CherryPy;
Perfil do Desenvolvedor
Algum conhecimento da linguagem de
programação Python.
Alguma experiência com programação orientada a
objetos básica.
Alguns conhecimentos de HTML, que é necessária
a construção de páginas web.
Instalação Linux
 Baixe a versão mais recente CherryPy do repositório .
 Descompacte / untar os arquivos
 Vá para o diretório criado pela extração do arquivo.
 Tipo "python setup.py install" para instalar o módulo
CherryPy
Instalação Windows
 Para instalar o CherryPy basta fazer um download da
biblioteca:
https://pypi.python.org/pypi/CherryPy
 Selecione o arquivo que termina em "exe“ e next
Algumas Definições: Servidor Web
 É uma interface que lida com o protocolo HTTP
 Seu objetivo é transformar pedidos HTTP em entidades
que são passadas para o servidor de aplicação e então
transformar a informação retornada pelo servidor de
aplicação em uma resposta HTTP.
Algumas Definições
 Aplicação:
 É um pedaço de software que pega uma unidade de informação
e aplica nela a regra do negócio e retorna uma unidade
processada de informação.
 Servidor de Aplicação:
 É um componente que hospeda uma ou mais aplicações.
 Servidor de Aplicação Web:
 É simplesmente a junção de um servidor web com
um servidor de aplicação em um componente.
Algumas Definições
Objetos de Publicação
 Qualquer objeto agregado ao objeto root é dito objeto publicado,
isto significa que o objeto é acessível via rotina interna de
mapeamento do objeto URL.
 Entretanto, não significa que o objeto é diretamente acessível via
Web, para que isto ocorra o objeto deve ser exposto
Expondo Objetos
• A exposição de objetos em cherrypy são permitidos pelo atributo
exposed, que pode ser diretamente setados para objetos que são
chamados
• Existe duas formas:
class Root:
def index(self):
...
index.exposed = True
@cherrypy.expose
def index(self):
Minha Primeira Aplicação
# -*- coding: iso-8859-1 -*- # Alfabeto Latino
import cherrypy # carregando biblioteca
class HelloWorld:
def index(self):
return "Alô Mundo"
index.exposed = True # permite definir quais métodos serão expostos na Web
cherrypy.quickstart(HelloWorld(),’/’) #publica instância da classe e inicia servidor
URI-> http://localhost:8080
Minha Primeira Aplicação
# -*- coding: iso-8859-1 -*- # Alfabeto Latino
import cherrypy # carregando biblioteca
class HelloWorld:
def index(self):
return "Alô Mundo"
index.exposed = True # permite definir quais métodos serão expostos na Web
cherrypy.quickstart(HelloWorld(),’/ ’) #publica instância da classe e inicia servidor
URI-> http://localhost:8080
Neste caso particular o site
raiz é mapeado pelo método
index()
Arquivo de configuração do CherryPy
 O CherryPy usa um simples arquivo de configuração para
customizar seu comportamento.
• Para executar este arquivo de configuração para o site use
cherrypy.config.update(arquivo_ou_dicionário)
#global.cfg
[global]
server.socket_port = 8000
server.thread_pool = 10 # quantas thread o servidor pode iniciar
tools.sessions.on = True # habilita sessão, usada sites complexos
tools.staticdir.root = "/home/site" # diretório onde estão aplic.
estáticas
[/static]
tools.staticdir.on = True
tools.staticdir.dir = "static"
Encontrando o objeto correto
 Ao receber uma URI, o CherryPy reparte ela em componentes de
caminho(path) e procura um objeto no site que é a melhor resposta
para esta URI particular.
 Para cada componente de caminho ele tenta encontrar um objeto de
mesmo nome, começando pela raiz(root) e vai descendo por cada
componente até encontrá-lo.
Recebendo dados de Formulários HTML
 Qualquer método pode receber dados adicionais do formulário
HTML usando argumentos (keyword arguments).
<form action=“nomeMetodo " method="post">  
campos do formulário
 aqui dentro das tags
</form> GET é o método HTML padrão.
Para submeter um formulário
HTML usando POST é preciso
especificar no atributo “method”
o valor “POST”.
GET é o método HTML padrão.
Para submeter um formulário
HTML usando POST é preciso
especificar no atributo “method”
o valor “POST”.
Duvidas?

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Java programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- InheritanceJava programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- Inheritance
 
Concept of Pipelining
Concept of PipeliningConcept of Pipelining
Concept of Pipelining
 
C by balaguruswami - e.balagurusamy
C   by balaguruswami - e.balagurusamyC   by balaguruswami - e.balagurusamy
C by balaguruswami - e.balagurusamy
 
Pipeline and data hazard
Pipeline and data hazardPipeline and data hazard
Pipeline and data hazard
 
Disk scheduling
Disk schedulingDisk scheduling
Disk scheduling
 
Ll(1) Parser in Compilers
Ll(1) Parser in CompilersLl(1) Parser in Compilers
Ll(1) Parser in Compilers
 
Operating systems system structures
Operating systems   system structuresOperating systems   system structures
Operating systems system structures
 
Pipelining & All Hazards Solution
Pipelining  & All Hazards SolutionPipelining  & All Hazards Solution
Pipelining & All Hazards Solution
 
Deadlock
DeadlockDeadlock
Deadlock
 
OODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objectsOODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objects
 
Introduction to method overloading &amp; method overriding in java hdm
Introduction to method overloading &amp; method overriding  in java  hdmIntroduction to method overloading &amp; method overriding  in java  hdm
Introduction to method overloading &amp; method overriding in java hdm
 
Hyper threading
Hyper threadingHyper threading
Hyper threading
 
Type checking in compiler design
Type checking in compiler designType checking in compiler design
Type checking in compiler design
 
Strings in Java
Strings in JavaStrings in Java
Strings in Java
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
 
Interface in java
Interface in javaInterface in java
Interface in java
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Java string handling
Java string handlingJava string handling
Java string handling
 
System Programming Unit II
System Programming Unit IISystem Programming Unit II
System Programming Unit II
 

Destaque

Padrao de projeto iterator
Padrao de projeto iteratorPadrao de projeto iterator
Padrao de projeto iteratorAlvaro Oliveira
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetosFabiano Rodrigues
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetosSliedesharessbarbosa
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Servidores de E-mail: Qmail, Sendmail e Postfix
Servidores de E-mail: Qmail, Sendmail e PostfixServidores de E-mail: Qmail, Sendmail e Postfix
Servidores de E-mail: Qmail, Sendmail e PostfixAlvaro Oliveira
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de ProgramaçãoAndré Agostinho
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 

Destaque (12)

Padrao de projeto iterator
Padrao de projeto iteratorPadrao de projeto iterator
Padrao de projeto iterator
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Servidores de E-mail: Qmail, Sendmail e Postfix
Servidores de E-mail: Qmail, Sendmail e PostfixServidores de E-mail: Qmail, Sendmail e Postfix
Servidores de E-mail: Qmail, Sendmail e Postfix
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 

Semelhante a Cherrypy Framework Rápido Aplicações Web

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termosValore I/O
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando PythonHelio Loureiro
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 

Semelhante a Cherrypy Framework Rápido Aplicações Web (20)

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Aula python
Aula pythonAula python
Aula python
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termos
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando Python
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 

Cherrypy Framework Rápido Aplicações Web

  • 1. Cherrypy - um framework para desenvolvimento rápido de aplicações web Sematec 2015 Instrutores: Álvaro Oliveira e André Pereira
  • 2. Roteiro  Breve Histórico  Características  Por que Python?  Quem Usa?  Como Usar?
  • 3. Breve Histórico  Linguagem Criada em 1990, Por Guido van Rossun  Foco em usuários como físicos e engenheiros  Python foi concebida através de uma linguagem chamada ABC.
  • 4. Características  Linguagem Interpretada  Tipagem dinâmica  Controle de Bloco é feita por indentação  Oferece tipos de alto nível  E orientado a objetos  Fácil aprendizado  Open Source  Biblioteca padrão muito rica
  • 5. Características  Multiplataforma: Linux/Unix, Windows, Symbian, MacOSX, etc  Multiparadigma: Procedural, Orientado a Objetos e Funcional
  • 6. Por que Python?  Os conceitos fundamentais da linguagem são simples de entender;  A sintaxe do Python é clara e fácil de aprender;  Os tipos pré-definidos em Python são poderosos e simples de usar;  O interpretador Python permite aprender e testar rapidamente trechos de código  Python é expressivo, com abstrações de alto nível => código curto e rápido desenvolvimento
  • 7. Por que Python?  Prototipação rápida  Desenvolvimento Web  Acesso a banco de dados  Código “enxuto”!  Computação numérica e científica  Jogos  3D
  • 8. Quem Usa?  Google (aplicações Web).  Yahoo (aplicações Web).  Microsoft (IronPython: Python para .NET).  Nokia (disponível para as linhas recentes de celulares e PDAs).  Disney (animações 3D).  Funceme(aplicações com Radares)  Mais casos: http://www.python.org/about/success/
  • 9. Como Usar?  Nas linguagens Interpretadas é executada utilizando o interpretador lê o código fonte e  interpreta diretamente, durante a sua execução.  Tanto pode utilizar no Shell ou Uma IDE
  • 10. Instalando Instalando  Entre no link http://www.python.org/getit/ e baixe para sua plataforma.  No windows: clique duas vezes, next, next, … e finish.  No linux: qualquer distribuíção já vem com Python!
  • 11. IDE Disponíveis  Idle :  Já vem com o Python. É bem simples de ser usado.  Komodo-Edit:  E uma excelente opção de editor, bastante rico em recursos tais como autocomplete, multi-language e outros.  Eclipse:  Ideal para desenvolvimento Java. Mas existem plugins para se desenvolver em Python.  Pycham:  E proprietário, Possui um conjunto de ferramentas úteis para um desenvolvimento produtivo.
  • 12. Utilizando o Shell no LINUX  Para chamar o interpretador Python apenas digite “python” no prompt do shell:  Quando o shell é iniciado aparecerão três ‘>’ (“>>>”) indicando que ele está ativo e pode receber comandos $ python Python 2.5.1 (r251:54863, Sep 4 2007, 19:00:19) [GCC 4.1.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> $ python Python 2.5.1 (r251:54863, Sep 4 2007, 19:00:19) [GCC 4.1.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
  • 13. Utilizando o IDLE  Acessar IDLE, depois em file e New File (ctrl + n), abrindo o editor para desenvolver o programa .
  • 14. Meu Primeiro Programa Mostrando o Python. Matando o Java e...
  • 15. Saida public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } Print “Hello, World!”Print “Hello, World!” JAVA Python
  • 16. Saída  Salvar com a extensão .py Exemplo: alomundo.py  Entre na pasta que está o arquivo cd nomedapasta  Em seguida, rodar o comando: python alomundo.py  No IDLE  Para salvar, file e save (Ctrl+S) e com extensão .py Em seguida em Run, para rodar o programa.  No Shell
  • 17. Definições de Variáveis  Sintaxe nomeDaVariavel = valorAtribuido  Descobrir o tipo atual de uma variável, utiliza a função type()  type(nome) nome = “python” #String num = 1 # valor inteiro preco = 10.99 # valor ponto flutuante t = True # valor booleano nome = “python” #String num = 1 # valor inteiro preco = 10.99 # valor ponto flutuante t = True # valor booleano
  • 18. Entrada  Sintaxe: nomeDaVariavel = input(’Texto para Saída’)  Para capturar informações do usuário podemos usar duas funções: input(“mensagem”) Espera que o usuários digite comandos ou valores raw_input(“mensagem”) Espera strings input(“mensagem”) Espera que o usuários digite comandos ou valores raw_input(“mensagem”) Espera strings
  • 19. Delimitações  Uso de “;” no fim de comandos não é obrigatório  Blocos delimitados por indentação def soma(a): . . . .return a+1 print soma(10) def soma(a): . . . .return a+1 print soma(10) Não é um erro sintático, mas é desnecessário e portanto deselegante
  • 20. Comentários  Comentários de são feitos usando ‘#’  Para comentários de bloco pode-se usar string multilinhas com ‘”””’ “”” def inc(a): . . . .return a+1””” #print inc(10) “”” def inc(a): . . . .return a+1””” #print inc(10)
  • 21. Codificação do Arquivo  A codificação é necessário para suportar caracteres que não fazem parte da linguagem inglesa, no código fonte do programa  o texto “#-*- coding: <encoding> -*#-” no inicio do arquivo, no qual <encoding> é a codificação do arquivo (geralmente latin1 ou utf-8) #!/usr/bin/env python #-*-coding:utf-8-*- #!/usr/bin/env python #-*-coding:utf-8-*- Indica o caminho para o interpretador usado em sistemas UNIX Indica o caminho para o interpretador usado em sistemas UNIX
  • 22. Importando Módulos Externos  Existe duas Forma de Importar Módulos externos:  Pelo comando import:  Pelo comando from: import <modulo> from<modulo>import <moduloespecifico>
  • 23. Exercício: 1.Faça um programa que leia da entrada padrão um número, em seguida imprima ele na tela. 2.Agora faça um programa que leia dois números e em seguida imprime o resultado da multiplicação deles
  • 24. Controle de Fluxo  Nada de parênteses! Nada de chaves!  IF if <condição>: <bloco de código> elif <condição>: <bloco de código> else: <bloco de código> if <condição>: <bloco de código> elif <condição>: <bloco de código> else: <bloco de código>
  • 25. Usando If #! /usr/bin/python # -*- coding: iso-8859-1 -*- x = input("Entre com um numero inteiro: ") if x < 0: print 'Numero negativo' elif x == 0: print 'Zero' elif x == 1: print 'Um' else: print 'Numero positivo' #! /usr/bin/python # -*- coding: iso-8859-1 -*- x = input("Entre com um numero inteiro: ") if x < 0: print 'Numero negativo' elif x == 0: print 'Zero' elif x == 1: print 'Um' else: print 'Numero positivo'
  • 26. Controle de Fluxo  O loop While, tem como função repetir um bloco de comando ate que aconteça uma parada. while expressão2: Comando3 ...
  • 27. Controle de Fluxo  O for em Python podemos “varrer” uma sequencia que se difere de outra linguagens por ser utilizado como iterador de progressão aritmética. for variavel in rage(ni,nf-1): Cria uma lista a partir do inteiro ni até o inteiro nf-1 Cria uma lista a partir do inteiro ni até o inteiro nf-1 for variavel in lista
  • 28. Exemplo for for contador in range(1,6): print contador 1 2 3 4 5 1 2 3 4 5
  • 29. Estrutura de Dados: Listas [ ]  É uma sequência de valores indexadas por um inteiro. Uma lista pode conter qualquer tipo de valor, incluindo valores de tipos mistos. numeros = [1, 2, 3] nomes = [ 'alberto', 'carlos', 'simone' ] misto = [ 1,2,'alberto',3.5,'simone' ] listas = [ numeros, nomes, misto ]
  • 30. Estrutura de Dados: Listas [ ]  Os elementos da lista podem ser acessados por meio de índices que vão de 0 até o comprimento da lista-1 lista = [ ‘maria’,’paulo’,’jose’,’carlos’] 00 11 22 33 >>> lista [0] maria >>> lista [0] maria
  • 31. Estrutura de Dados: Listas [ ]  Fatias, ou slices, de uma lista podem ser geradas facilmente com o “:”  Lista = [inicio:final] >>> n = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ] >>> n[2:4] [3, 4]
  • 32. Estrutura de Dados: Listas [ ]  Métodos Uteis 11 22 44 33 00 11 22 33 lista.extend(lista2)lista.append(8) lista.pop() lista.remove(2)
  • 33. Exercício: 1.Faça um programa que leia da entrada padrão um número, em seguida adicione e imprima a lista . 2.Seguindo o exemplo anterior:  Crie uma nova lista e adicione na lista anterior;  Remova um elemento na Posição 4;  Imprima toda a lista;
  • 35. Python: Orientado a Objeto “Orientação a objetos, OO, é um termo que descreve uma série de técnicas para estruturar soluções para problemas computacionais. é um paradigma de programação no qual um programa e estruturado em objetos, e que enfatiza os aspectos abstração, encapsulamento, polimorfismo e herança.”
  • 36. E tudo é um Objeto Tudo em Python é no fim um objeto! list3.append(‘a’) Novos objetos (classes) podem ser facilmente adicionados aos tipos de dados já existentes em Python! De fato, programar em Python é normalmente feito de forma orientado a objetos!
  • 37. Definição de uma Classe  A forma mais simples de definição de uma classe pode ser descrita dessa maneira: >>> class NomeDaClasse: <comando-1> . . . <comando-N> >>> class NomeDaClasse: <comando-1> . . . <comando-N>
  • 38. Definição de um Metodo  Utiliza o comando def, para definir um método de uma classe: >>> class HelloMundo: def alomundo(self): print “Ola Mundo“ >>> class HelloMundo: def alomundo(self): print “Ola Mundo“
  • 39. Instanciando uma Classe  Quando criamos a classe HelloMundo, criamos um novo tipo de dado. Os membros deste novo tipo são chamados instâncias deste tipo ou objetos. Criar uma nova instância é instanciar. Para instanciar o objeto HelloMundo: ... alo=HelloMundo() alo.alomundo() ... alo=HelloMundo() alo.alomundo()
  • 40. Definição de uma Classe  Exemplo: class HelloMundo: #Definindo a Classe def alomundo(self): #Definindo o Método print “Ola Mundo“ alo=HelloMundo() #criando uma instância da classe alo.alomundo()
  • 41. Definição da Classe  Privados  Atributos e métodos que só podem ser acessados  dentro da classe, usa-se “__” no início do nome  Protected  Apenas convenção e usa-se apenas um “_” no  nome de métodos ou atributos, ex. _telefone class musica: _compositor=“Luiz Gonzaga” __ritmo=“Baiao” m=musica() m._compositor
  • 42. Definição da Classe class Contador(object): def __init__(this): this.contagem = {} def incluir(this, item): qtd = this.contagem.get(item, 0) + 1 this.contagem[item] = qtd def contar(this, item): return this.contagem[item]
  • 43. Definição da Classe class Contador(object): def __init__(this): this.contagem = {} def incluir(this, item): qtd = this.contagem.get(item, 0) + 1 this.contagem[item] = qtd def contar(this, item): return this.contagem[item] Em Python Não Usamos this Em Python Não Usamos this
  • 44. Definição da Classe class Contador(object): def __init__(self): self.contagem = {} def incluir(self, item): qtd = self.contagem.get(item, 0) + 1 self.contagem[item] = qtd def contar(self, item): return self.contagem[item] Usamos self Usamos self
  • 45. Argumento do Método self • Em todos métodos associados à instância definido dentro de uma classe devem ter o argumento self definido como primeiro argumento. • Maior flexibilidade na chamada de métodos. • É a referência para a própria instância da classe • Mesmo que você tem um método que não recebe nenhum argumento, ainda assim você deve definir que este tenha o argumento self.
  • 46. Construtor __init__( )  é um método especial que é invocado automaticamente quando um novo objeto é criado e que inicializa os atributos deste objetos.  E opcional! class Hello: def _init_ (self,nome): self.nome = nome
  • 48. Herança  Uma classe pode herdar a definição de outra classe  Python não tem a palavra ‘extends’ como em Java  A Herança multipla é suportada SuperClasse SubClasse SubClasse
  • 49. Exemplo Herança  Para definir uma subclasse, coloque o nome da superclasse entre parênteses depois do nome da subclasse na primeira linha da definição. class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): _numRodas=4 gol = Carro() gol.andar()
  • 50. Sobrecarga Redefinição de métodos já existente, com o mesmo nome. Quando um método da classe pai é redefinido na classe filha  Diz-se que o método foi sobrecarregado (overloaded)
  • 51. Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
  • 52. Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar()
  • 53. Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): print ' Andei de Carro' gol = Carro() gol.andar() Andei de Carro Andei de Carro
  • 54. Redefinindo Métodos class Veiculo: def andar(self): print "Andei" class Carro(Veiculo): def andar(self): Veiculo.andar(self) gol = Carro() gol.andar() Você pode chamar o método da superclasse Você pode chamar o método da superclasse
  • 55. Redefinindo Métodos  Você pode redefinir métodos declarados na superclasse O mesmo vale para o método __init__ . No método __init__ das subclasses: parentClass.__init__(self,x,y)  onde parentClass é o nome da classe pai.
  • 56. Redefinindo Métodos class Veiculo: def __init__(self,numPassageiros): self.numPassageiros = numPassageiros def andar(self): print "Andei" class Carro(Veiculo): _numRodas= None def __init__(self, _numRodas,numPassageiros): Veiculo. __init__(self,numPassageiros) self._numRodas= _numRodas def qtdPassageiros(self): print self.numPassageiros gol = Carro(4,6) gol.qtdPassageiros() class Veiculo: def __init__(self,numPassageiros): self.numPassageiros = numPassageiros def andar(self): print "Andei" class Carro(Veiculo): _numRodas= None def __init__(self, _numRodas,numPassageiros): Veiculo. __init__(self,numPassageiros) self._numRodas= _numRodas def qtdPassageiros(self): print self.numPassageiros gol = Carro(4,6) gol.qtdPassageiros() Construtor da classe filha tem que chamar o da classe pai
  • 58. Polimorfismo  Polimorfismo literalmente significa várias formas.  Em Python, um método é polimórfico se ele tem diferentes implementações numa família de classes  Ex:  O operador ‘+’ é polimórfico ! se refere a diferentes operações quando usado, por exemplo, em inteiros e strings
  • 59. Exemplo Polimorfismo class Mamifero: def som(self): print 'emitir um som' class Homem(Mamifero): def som(self): print ' Oi' class Cachorro(Mamifero): def som(self): print ' Wuff ! Wuff' class Gato(Mamifero): def som(self): print ' Meaww' mamifero = Mamifero() mamifero.som() animais = [ Homem(),Cachorro(),Gato()] for animal in animais: animal.som()
  • 60. Exercício Crie uma Classe Chamada Conta Corrente, declarando o construtor com atributo numero e o método creditar() e debitar()  Crie uma Classe Poupança tendo como atributo taxaDeJuros e com o metodo renderJuros(), que herda de Conta Corrente e
  • 64. Características  Uma simples e poderosa biblioteca do Python  Um framework Python orientada a objetos web.  Pacote auto-contido, só necessita do Python  Não intrusivo  Já vem com Servidor web  Separa o código do layout do HTML  É Gratis
  • 65. Por que Cherrypy  Tem uma interface limpa;   É muito pythônico; ou seja, ele segue as convenções do Python muito bem (código é escassa e não poluente);  Maturidade, tem muitas versões estáveis finais;  Tem uma comunidade dedicada que desenvolve aplicativos implementados CherryPy;
  • 66. Perfil do Desenvolvedor Algum conhecimento da linguagem de programação Python. Alguma experiência com programação orientada a objetos básica. Alguns conhecimentos de HTML, que é necessária a construção de páginas web.
  • 67. Instalação Linux  Baixe a versão mais recente CherryPy do repositório .  Descompacte / untar os arquivos  Vá para o diretório criado pela extração do arquivo.  Tipo "python setup.py install" para instalar o módulo CherryPy
  • 68. Instalação Windows  Para instalar o CherryPy basta fazer um download da biblioteca: https://pypi.python.org/pypi/CherryPy  Selecione o arquivo que termina em "exe“ e next
  • 69. Algumas Definições: Servidor Web  É uma interface que lida com o protocolo HTTP  Seu objetivo é transformar pedidos HTTP em entidades que são passadas para o servidor de aplicação e então transformar a informação retornada pelo servidor de aplicação em uma resposta HTTP.
  • 70. Algumas Definições  Aplicação:  É um pedaço de software que pega uma unidade de informação e aplica nela a regra do negócio e retorna uma unidade processada de informação.  Servidor de Aplicação:  É um componente que hospeda uma ou mais aplicações.  Servidor de Aplicação Web:  É simplesmente a junção de um servidor web com um servidor de aplicação em um componente.
  • 72. Objetos de Publicação  Qualquer objeto agregado ao objeto root é dito objeto publicado, isto significa que o objeto é acessível via rotina interna de mapeamento do objeto URL.  Entretanto, não significa que o objeto é diretamente acessível via Web, para que isto ocorra o objeto deve ser exposto
  • 73. Expondo Objetos • A exposição de objetos em cherrypy são permitidos pelo atributo exposed, que pode ser diretamente setados para objetos que são chamados • Existe duas formas: class Root: def index(self): ... index.exposed = True @cherrypy.expose def index(self):
  • 74. Minha Primeira Aplicação # -*- coding: iso-8859-1 -*- # Alfabeto Latino import cherrypy # carregando biblioteca class HelloWorld: def index(self): return "Alô Mundo" index.exposed = True # permite definir quais métodos serão expostos na Web cherrypy.quickstart(HelloWorld(),’/’) #publica instância da classe e inicia servidor URI-> http://localhost:8080
  • 75. Minha Primeira Aplicação # -*- coding: iso-8859-1 -*- # Alfabeto Latino import cherrypy # carregando biblioteca class HelloWorld: def index(self): return "Alô Mundo" index.exposed = True # permite definir quais métodos serão expostos na Web cherrypy.quickstart(HelloWorld(),’/ ’) #publica instância da classe e inicia servidor URI-> http://localhost:8080 Neste caso particular o site raiz é mapeado pelo método index()
  • 76. Arquivo de configuração do CherryPy  O CherryPy usa um simples arquivo de configuração para customizar seu comportamento. • Para executar este arquivo de configuração para o site use cherrypy.config.update(arquivo_ou_dicionário) #global.cfg [global] server.socket_port = 8000 server.thread_pool = 10 # quantas thread o servidor pode iniciar tools.sessions.on = True # habilita sessão, usada sites complexos tools.staticdir.root = "/home/site" # diretório onde estão aplic. estáticas [/static] tools.staticdir.on = True tools.staticdir.dir = "static"
  • 77. Encontrando o objeto correto  Ao receber uma URI, o CherryPy reparte ela em componentes de caminho(path) e procura um objeto no site que é a melhor resposta para esta URI particular.  Para cada componente de caminho ele tenta encontrar um objeto de mesmo nome, começando pela raiz(root) e vai descendo por cada componente até encontrá-lo.
  • 78. Recebendo dados de Formulários HTML  Qualquer método pode receber dados adicionais do formulário HTML usando argumentos (keyword arguments). <form action=“nomeMetodo " method="post">   campos do formulário  aqui dentro das tags </form> GET é o método HTML padrão. Para submeter um formulário HTML usando POST é preciso especificar no atributo “method” o valor “POST”. GET é o método HTML padrão. Para submeter um formulário HTML usando POST é preciso especificar no atributo “method” o valor “POST”.