• Like
Python 08
Upcoming SlideShare
Loading in...5
×

Python 08

  • 478 views
Uploaded on

Ú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 …

Ú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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
478
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \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

Transcript

  • 1. Curso de PythonAula 8 - Tópicos Especiais Bruno Gama Catão brunogamacatao@gmail.com
  • 2. Agenda• Django + Adobe Flex;• PyGame;• Django + UOL PagSeguro;• Django + Apache;• Dicas.
  • 3. 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.
  • 4. Camada de Apresentação Aplicações+ Web+Baseadas+ RIA+ HTML5+em+HTML+ Microso<+ Adobe+Flex+ Java+FX+ Siverlight+
  • 5. 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.
  • 6. Arquitetura LayoutMXML$ SWF$ Flex%SDK% (Flash)$ AS$ Lógica
  • 7. 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.
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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.
  • 12. 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.
  • 13. 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)
  • 14. Módulos urlsurlpatterns = patterns(, ... (r^gateway/, meuprojeto.aplicacao.amfgateway.meuGateway),)
  • 15. E no lado Flex ?<mx:RemoteObject id="servicos" endpoint="http://localhost:8000/gateway/" destination="Servicos"> ...</mx:RemoteObject>
  • 16. Exemplo
  • 17. 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.
  • 18. Primeiro exemplo
  • 19. Primitivas e Teclado
  • 20. Imagens
  • 21. Sons
  • 22. UOL PagSeguro• O PagSeguro é um componente que permite a sites receber pagamentos de diferentes fontes: • Cartões de crédito; • Boletos bancários.
  • 23. 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.
  • 24. Formulário
  • 25. <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>
  • 26. Módulo pagseguro.py
  • 27. 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)
  • 28. Função concluir
  • 29. 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)
  • 30. 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.
  • 31. 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.
  • 32. 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
  • 33. 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>
  • 34. 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
  • 35. 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.