Python 08
Upcoming SlideShare
Loading in...5
×
 

Python 08

on

  • 626 views

Última aula do curso de Python, aqui mostramos de forma superficial como fazer a integração do Django com Adobe Flex, como utilizar o módulo do PagSeguro, PyGame e como integrar sua aplicação ...

Última aula do curso de Python, aqui mostramos de forma superficial como fazer a integração do Django com Adobe Flex, como utilizar o módulo do PagSeguro, PyGame e como integrar sua aplicação com o Apache

Statistics

Views

Total Views
626
Views on SlideShare
618
Embed Views
8

Actions

Likes
0
Downloads
13
Comments
0

1 Embed 8

http://www.brunocatao.com 8

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Python 08 Python 08 Presentation Transcript

  • Curso de PythonAula 8 - Tópicos Especiais Bruno Gama Catão brunogamacatao@gmail.com
  • Agenda• Django + Adobe Flex;• PyGame;• Django + UOL PagSeguro;• Django + Apache;• Dicas.
  • Django + Adobe Flex• Aplicações web são normalmente organizadas em 3 camadas: Apresentação Lógica Dados• Django acelera muito o desenvolvimento das camadas de lógica e de dados, mas não faz muito pela camada de apresentação.
  • Camada de Apresentação Aplicações+ Web+Baseadas+ RIA+ HTML5+em+HTML+ Microso<+ Adobe+Flex+ Java+FX+ Siverlight+
  • Adobe Flex• Motivação: • Cerca de 95% dos browsers têm o plugin do Flash instalado; • Desenvolvimento de aplicações web, para diferentes browsers, com HTML e CSS é difícil;• A tecnologia Adobe Flex produz aplicações web “bonitas” de forma mais produtiva.
  • Arquitetura LayoutMXML$ SWF$ Flex%SDK% (Flash)$ AS$ Lógica
  • Ferramentas• Adobe Flex SDK: • Grátis; • Compilador (linha de comando) de arquivos MXML e AS para SWF; • Versões para Windows, Linux e Mac.• Adobe Flex Builder: • Editor visual integrado com o Eclipse; • Ferramenta paga: • Versão profissional: R$ 400,00 • Versão acadêmica: Grátis; • Versões para Windows e Mac.
  • Integração de Flex comTecnologias de Servidor• Flex é uma tecnologia apenas para camada de apresentação;• O lado servidor da aplicação pode ser implementado com a tecnologia que preferir (Java, PHP, Python, Ruby, .NET, etc);• A comunicação pode ser feita: • WebServices (XML ou JSON); lento e genérico • Canais AMF. solução mais rápida e simples
  • Antes de começar• LEMBREM-SE !!!• Abram o prompt de comando (terminal);• Configurem as variáveis de ambiente do seu computador: • No Windows (Linux não precisa): PATH=%PATH%;C:Python26;C:Python26scripts
  • PyAMF• Implementação do protocolo AMF para a linguagem de programação Python;• Instalação: • Setup tools: • easy_install pyamf prefira esta forma • Ou, download do site http://pyamf.org
  • Instalando o Flex Builder• O Adobe Flex Builder vem de duas formas: • Plugin para o Eclipse; • Distribuição do Eclipse adaptada;• Para esta aula dispomos do Adobe Flex Builder Eclipse Plugin versão 3.0;• Atenção, este plugin apenas funciona na versão 3.4 (Ganymede) do Eclipse.
  • Configurando Django + PyAmf• Dentro da sua aplicação crie um módulo chamado amfgateway;• Modifique o módulo urls principal, criando uma regra para o amf gateway.
  • Módulo amfgatewayimport pyamffrom pyamf.remoting.gateway.django import DjangoGatewayimport meuprojeto.aplicacao.views as viewsfrom meuprojeto.aplicacao import modelsservices = { Servicos: views,}pyamf.register_package(models, meuprojeto.aplicacao.models)meuGateway = DjangoGateway(services, expose_request=False)
  • Módulos urlsurlpatterns = patterns(, ... (r^gateway/, meuprojeto.aplicacao.amfgateway.meuGateway),)
  • E no lado Flex ?<mx:RemoteObject id="servicos" endpoint="http://localhost:8000/gateway/" destination="Servicos"> ...</mx:RemoteObject>
  • Exemplo
  • PyGame• Implementação da biblioteca SDL para a linguagem de programação Python;• Permite a utilização de imagens, sons e dispositivos de entrada facilmente em programas Python.
  • Primeiro exemplo
  • Primitivas e Teclado
  • Imagens
  • Sons
  • UOL PagSeguro• O PagSeguro é um componente que permite a sites receber pagamentos de diferentes fontes: • Cartões de crédito; • Boletos bancários.
  • UOL PagSeguro• Funcionamento: • Você deve se cadastrar no PagSeguro: • http://www.pagseguro.com.br • Seu site deve enviar os dados para o PagSeguro com o seu número de cliente; • O PagSeguro irá intermediar todo o processo de pagamento; • Assim que o pagamento tenha sido confirmado, o PagSeguro irá notificar a sua aplicação.
  • Formulário
  • <form action=https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx method=POST> <input type="hidden" name="email_cobranca" value="brunogamacatao@gmail.com"/> <input type="hidden" name="tipo" value="CP"/> <input type="hidden" name="moeda" value="BRL"/> <input type="hidden" name="ref_transacao" value="{{referenciaCompra}}"/> <input type="hidden" name="cliente_nome" value="{{nomeCompleto}}"/> <input type="hidden" name="cliente_cep" value="{{cep}}"/> <input type="hidden" name="cliente_end" value="{{endereco}}"/> <input type="hidden" name="cliente_num" value="{{numero}}"/> <input type="hidden" name="cliente_compl" value="{{complemento}}"/> <input type="hidden" name="cliente_bairro" value="{{bairro}}"/> <input type="hidden" name="cliente_cidade" value="{{cidade.nome}}"/> <input type="hidden" name="cliente_uf" value="{{estado.sigla}}"/> <input type="hidden" name="cliente_pais" value="BRA"/> <input type="hidden" name="cliente_ddd" value="{{telefone_ddd}}"/> <input type="hidden" name="cliente_tel" value="{{telefone}}"/> <input type="hidden" name="cliente_email" value="{{email}}"/> <input type="hidden" name="encoding" value="utf-8"/> {{for produto in produtos}} <input type="hidden" name="item_id_{{forloop.counter}}" value="{{produto.id}}"/> <input type="hidden" name="item_descr_{{forloop.counter}}" value="{{produto.titulo}}"/> <input type="hidden" name="item_quant_{{forloop.counter}}" value="{{produto.quantidade}}"/> <input type="hidden" name="item_valor_{{forloop.counter}}" value="{{produto.valor * 10)}"/> <input type="hidden" name="item_frete_{{forloop.counter}}" value="{{produto.valor_frete}}"/> <input type="hidden" name="item_peso_{{forloop.counter}}" value="{{produto.peso}}"/> {{end for}}</form>
  • Módulo pagseguro.py
  • import sysimport urllib2, urllibfrom django.http import HttpResponse  class Pagamento(object):  def _conectar(self, url, params): query_str = urllib.urlencode(params) req = urllib2.Request(url, query_str) f = urllib2.urlopen(req) conteudo = f.read() f.close() return conteudo  def _enviar(self, url, params): retorno = self._conectar(url, params) if retorno.lower() == verificado: return True else: return False PS_URL = https://pagseguro.uol.com.br/Security/NPI/Default.aspxclass PagSeguro(Pagamento): def processar(self, token, params, url=PS_URL): if not params: return False else: lista = [] for key in params.keys(): lista.append((key,params[key])) lista.append((Comando, validar)) lista.append((Token, token))  return self._enviar(url, lista)
  • Função concluir
  • def concluir(request): if request.method == POST: # token gerado no painel de controle do PagSeguro token = 12345699CA2AAAF4599EA697BB2F7FFF p = PagSeguro() retorno = p.processar(token, request.POST)  if retorno == True: try: # Cadastra os dados recebidos no banco de dados. # Utilize o request.POST.get(nomedocampo) para obter os valores except: pass return HttpResponse(Ok) else: return HttpResponse(Error)  else: # Carrega tela contendo a mensagem de compra realizada return direct_to_template(request,carrinho/concluir.html)
  • Django + Apache• O servidor web integrado do Django deve ser utilizado apenas para desenvolvimento e testes;• Quando for implantar a sua aplicação em produção utilize o Apache.
  • Apache• Servidor Web mais utilizado no mundo;• Gratuito e de código aberto;• Disponível para todas os sistemas operacionais;• Nativamente serve páginas estáticas;• Pode servir conteúdo dinâmico a partir de módulos (plugins) instalados.
  • mod_python• Módulo para execução de scripts python dentro do servidor web;• Os módulos funcionam associando padrões de URL a arquivos (no caso do python, scripts);• Instalação: • sudo apt-get libapache2-mod-python
  • Adicionando a aplicação ao Apache• Edite o arquivo httpd.conf: • sudo gedit /etc/apache2/http.conf• Adicione as seguintes linhas: <Location "/meusite/"> SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE meusite.settings PythonOption django.root /meusite PythonDebug On PythonPath "[/home/local/projetos] + sys.path" </Location>
  • Adicionando os arquivos estáticos• Para que o módulo admin continue funcionando no Apache é necessário copiar os seus arquivos estáticos para o Apache;• Copie todos os arquivos da pasta: • django/contrib/admin/media• Para a pasta: • /var/www
  • Dicas• Quem se interessa pelo desenvolvimento em sistemas móveis, atenção ao Python S60;• Para utilizar é necessário baixar o Nokia S60 SDK;• Bibliotecar para gerar relatórios PDF em Python: PISA;• Os softwares Inkscape, GIMP, Blender e BrOffice são feitos, totalmente ou parcialmente, em Python e podem ser extendidos em Python através de plugins ou de macros;• O livro Python para Desenvolvedores é gratuito.