SlideShare uma empresa Scribd logo
Entendendo Frameworks Web com Python Luiz Guilherme F. Aldabalde Flisol 2009 - UERJ
Apresentação
Conteúdo Introdução Python Conceituando os Frameworks Desafios da web  Dividir para conquistar -MVC Camada de Controle Camada de Apresentação Camada de Persistência Juntando tudo Frameworks Python Referências
Introdução O objetivo desta palestra é decompor um modelo típico de framework web, implementado em Python, procurando mostrar as características básicas dos seus componentes e os desafios para usa-lo de forma adequada.
Python Histórico Python foi criada em 1990 por Guido Van Rossum.  O nome da linguagem é uma homenagem ao grupo inglês de humor Monty Python.  Segundo Guido a linguagem foi concebida para ocupar o espaço que existia entre as linguagens C/C++ e o shell.
Python - Introdução Por que usar Python ? Fácil Aprendizado  Fácil Manutenção Possui uma extensa Biblioteca Padrão Possui uma poderosa Estruturas de Dados Nativas Disponível com código aberto e livre Interface para outras Linguagens ( Lua, Java, C)  Multi-plataforma É um canivete- suíço  !!!
Python - Características  Cada linha termina com ponto e vírgula (;) ou com um <enter > Cada bloco de instruções é definido pela identação  Comentário em uma linha é definido pelo símbolo tralha (#) Comentário em mais e uma linha podemos usar aspas triplas para começar e terminar (“”” texto comentado “””) Uma variável não é declarada, ela assume o tipo quando associada com um valor Resumindo  ...
“ Framework é uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido. Frameworks são projetados com a intenção de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando nas exigências do software do que com detalhes tediosos de baixo nível do sistema.” fonte: wikipedia Framework “ A Web framework is a collection of packages or modules which allow developers to write Web applications or services without having to handle such low-level details as protocols, sockets or process/thread management.   ” fonte : wiki.python.org
Desafios da Web Desafios do ambiente web : Múltiplos ambientes a considerar ( browser, servidor)  Mais de uma linguagem envolvida  Separação design x aplicação Novos paradigmas web 2.0 : Ajax e Rich Internet Applications
Dividir para conquistar - MVC Compreendendo cada elemento podemos passar a ter uma visão melhor do todo Podemos usar partes destes elementos em soluções mais simples. O framework deve ser o  responsável pela integração destes elementos
Camada de Controle É o núcleo da aplicação Responsável por tratar os eventos, as solicitações e as respostas da aplicação Representado por um servidor que aguarda as informações provenientes do navegador e devolve uma resposta quando solicitado
Iniciando o uso do Python Resumo  : Servidor Web em Python Muito simples  As páginas são métodos de classes python Atualmente existem duas versões em uso: 3.01 e 2.2 O navegador passa, através da página HTML, as informações que são tratadas como parâmetros  pelas funções. http://www.cherrypy.org/ CherryPy
Iniciando o uso do Python Exemplo : import cherrypy class HelloWorld(object): def index(self): return &quot;Hello World!&quot; index.exposed = True # Cherrypy 2.2 #cherrypy.root = HelloWorld() #cherrypy.server.start() cherrypy.quickstart(HelloWorld()) CherryPy CherryPy 3
Camada de Apresentação É a aparência do seu sistema  Nesta camada são preparadas as páginas que serão exibidas através do uso de módulos de substituição que permitem gerar páginas a partir de modelos ( templates) utilizando tags específicas. Quanto mais isolada das regras de negócio da aplicação mais confortável para os web designers. Existem vários módulos em python  para resolver isso : zpt, kid, Genshi, ...  Trabalha em conjunto com o HTML, com o Javascript e o CSS.
Template kid <?xml version='1.0' encoding='utf-8'?> <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:py=&quot;http://purl.org/kid/ns#&quot;> <head> <title>${title.upper()}</title> </head> <body> <h1 py:content=&quot;title&quot;>Title</h1> <p>  A message from Python:  </p> <blockquote py:content=&quot;message&quot;>  Message goes here.  </blockquote> </body> </html>
Usando o Template #-*- encoding: utf-8 -*- from kid import Template template = Template(file='hello.kid', title=&quot;Hello World&quot;, message=u&quot;Python é simples !&quot;) print template.serialize()
Camada de Persistência Nesta camada temos a oportunidade de gravar as informações em um banco de dados. A escolha do BD é muito importante e pode ser um fator de sucesso ou não da solução A dificuldade surge pela manipulação do banco. Comandos específicos e em várias linhas. A flexibilidade é um fator decisivo para o surgimento de uma camada de interface entre o banco e a aplicação
Iniciando o uso do Python Object-Relational Mappers Exemplos : SQLObject, STORM, SQLALCHEMY Permite criar uma camada de abstração entre o programador e o banco de dados, simplificando o código e melhorando a sua compreensão. O uso do BD fica mais prático, porque você acessa os registros ”diretamente” ORM
SQLObject SQLObject é um ”wrapper” feito em python para um bancos de dados.  O Objetivo é criar um nível abstração para o pgrogramador, de forma a evitar os comandos SQL. Atualmente pode ser utilizado com os seguintes bancos : MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL Server e Oracle. http://www.sqlobject.org/
SQLObject Cada tabela se transforma em uma classe Cada linha da tabela é uma instância As colunas se tornam atributos class Pessoa(SQLObject): nome = StringCol() sobrenome = StringCol() emails = MultipleJoin(”Email”) class Email(SQLOBject): pessoa = ForeignKey(”Pessoa”) tipo = EnumCol([”casa”, ”trabalho”]) correio = StringCol()
# -*- encode: latin -*- from sqlobject import * import os # Inicializa o banco db_filename = os.path.abspath(&quot;data.db&quot;) connection_string = &quot;sqlite:&quot; + db_filename connection = connectionForURI(connection_string) sqlhub.processConnection = connection #  [continua] SQLObject
# Tabela person do banco class Person(SQLObject): firstName = StringCol() middleInitial = StringCol(length = 1, default=None) lastName = StringCol() # Criar a uma tabela nova Person.createTable() # Grava uma linha nova no BD Person(firstName =&quot;Romeu&quot;, lastName=&quot;silas&quot;) SQLObject
Juntando tudo ... Automação CRUD Admin interface Templates e widgets Autenticação e controle de acesso  Proteção contra Sql Injection
Frameworks Python Zope/Plone TurboGears Django Web2py Pylons ...
Iniciando o uso do Python Composto pelos seguintes módulos : MochKit / Scriptaculous Kid / Geshi CherryPy SQLObject / SQLAlchemy TurboGears
Estrutura monolítica  Contém engine de templates e um ORM integrado Interface de administração  URL elegantes Muito boa documentação Grande comunidade no Brasil Django
-  Site oficial :  www.python.org - Site oficial no Brasil :  www.pythonbrasil.com.br - Manual Referência :  http://docs.python.org/ref/ref.html - Tutorial ( Português) : http://www.python.org/doc/current/tut/tut.html Alguns endereços  :  Referências
Lista SL-RJ :  groups.google.com/group/slrj Lista PythonRio  :  br.groups.yahoo.com/group/pythonrio/ Mais alguns endereços  :  Referências
- Python in a Nutshell – Alex Martelli – O'Reilly - Python Cookbook – Alex Martelli e David Ascher  - O'Reilly - Dive Into Python – Mark Pilgrim ( http://www.diveintopython.org/  ) - Aprendendo Python - Mark Lutz e David Ascher Livros :  Referências
Perguntas ?
Obrigado !!  Luiz Guilherme F. Aldabalde [email_address]

Mais conteúdo relacionado

PPT
Desenvolvimento web em java com JSP e Servlets
PDF
PHP Turbinado com CodeIgniter - Conisli 2011
ODP
Introdução ao framework CodeIgniter
PDF
Apostila de C# & Asp.Net
PPTX
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
PPTX
Programando php com excelência
PDF
Tutorial codeigniter
PPTX
Frameworks em Java
Desenvolvimento web em java com JSP e Servlets
PHP Turbinado com CodeIgniter - Conisli 2011
Introdução ao framework CodeIgniter
Apostila de C# & Asp.Net
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Programando php com excelência
Tutorial codeigniter
Frameworks em Java

Mais procurados (20)

PDF
JavaFX 1.2
PPT
Spring & Struts
PDF
Desenvolvimento web com CodeIgniter
PPTX
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
PDF
Aula 1 - Introdução a linguagem JAVA SE
PDF
Java 8 - A Evolução da Linguagem
ODP
JSF e outras tecnologias Java Web - IMES.java
PPTX
ASP.NET - Conceitos Básicos
PDF
Java Web, o Tutorial
PPT
Introdução ao JAVA (linguagem de programação WEB)
KEY
Django - Desenvolvimento web ágil com Python
PDF
Fundamentos de Objetos Remotos
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
PPTX
Introdução C#
PPTX
PHP 10 CodeIgniter
PPTX
ASP.NET - Web Services
PPTX
Apresentação faef
PPTX
Conhecendo o Visual Studio 11
JavaFX 1.2
Spring & Struts
Desenvolvimento web com CodeIgniter
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Aula 1 - Introdução a linguagem JAVA SE
Java 8 - A Evolução da Linguagem
JSF e outras tecnologias Java Web - IMES.java
ASP.NET - Conceitos Básicos
Java Web, o Tutorial
Introdução ao JAVA (linguagem de programação WEB)
Django - Desenvolvimento web ágil com Python
Fundamentos de Objetos Remotos
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Introdução C#
PHP 10 CodeIgniter
ASP.NET - Web Services
Apresentação faef
Conhecendo o Visual Studio 11
Anúncio

Semelhante a Entendendo Frameworks web com Python (20)

PDF
ODP
Desenvolvendo aplicações web com python e web2py
PDF
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
PDF
Python mudando o modo de desenvolver para a internet
PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
PDF
Python - Programando em alto nível
PDF
Desbravando a web com python - Matheus Lima
PPT
Introdução ao framework Django
ODP
Desmistificando web2py - #TDC2011
PDF
Apresentação web2py
PDF
Livro para desenvolvedores de Python
PPTX
Congresso iii unifacsv3
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
PDF
Modulo python Configurando o Django ebac.pdf
PPTX
Python na Web - Apresentando o web2py
PDF
Canivete python
PDF
Postgresql +python
PDF
Postgre sql +python
PDF
Tutorial Django + Python
PPTX
Ampliando os Horizontes dos Profissionais de Redes através do Python
Desenvolvendo aplicações web com python e web2py
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a internet
Django: desenvolvendo aplicações web de maneira simples e rápida!
Python - Programando em alto nível
Desbravando a web com python - Matheus Lima
Introdução ao framework Django
Desmistificando web2py - #TDC2011
Apresentação web2py
Livro para desenvolvedores de Python
Congresso iii unifacsv3
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Modulo python Configurando o Django ebac.pdf
Python na Web - Apresentando o web2py
Canivete python
Postgresql +python
Postgre sql +python
Tutorial Django + Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
Anúncio

Último (20)

PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPT
Sistemas de Informação em Saúde Aplicada.ppt
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Aula sobre banco de dados com firebase db
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula 18 - Manipulacao De Arquivos python
COBITxITIL-Entenda as diferença em uso governança TI
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 9 - (Threads) Multitarefas.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Sistemas de Informação em Saúde Aplicada.ppt
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Émile Durkheim slide elaborado muito bom
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula sobre banco de dados com firebase db
Aula sobre desenvolvimento de aplicativos
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula 18 - Manipulacao De Arquivos python

Entendendo Frameworks web com Python

  • 1. Entendendo Frameworks Web com Python Luiz Guilherme F. Aldabalde Flisol 2009 - UERJ
  • 3. Conteúdo Introdução Python Conceituando os Frameworks Desafios da web Dividir para conquistar -MVC Camada de Controle Camada de Apresentação Camada de Persistência Juntando tudo Frameworks Python Referências
  • 4. Introdução O objetivo desta palestra é decompor um modelo típico de framework web, implementado em Python, procurando mostrar as características básicas dos seus componentes e os desafios para usa-lo de forma adequada.
  • 5. Python Histórico Python foi criada em 1990 por Guido Van Rossum. O nome da linguagem é uma homenagem ao grupo inglês de humor Monty Python. Segundo Guido a linguagem foi concebida para ocupar o espaço que existia entre as linguagens C/C++ e o shell.
  • 6. Python - Introdução Por que usar Python ? Fácil Aprendizado Fácil Manutenção Possui uma extensa Biblioteca Padrão Possui uma poderosa Estruturas de Dados Nativas Disponível com código aberto e livre Interface para outras Linguagens ( Lua, Java, C) Multi-plataforma É um canivete- suíço !!!
  • 7. Python - Características Cada linha termina com ponto e vírgula (;) ou com um <enter > Cada bloco de instruções é definido pela identação Comentário em uma linha é definido pelo símbolo tralha (#) Comentário em mais e uma linha podemos usar aspas triplas para começar e terminar (“”” texto comentado “””) Uma variável não é declarada, ela assume o tipo quando associada com um valor Resumindo ...
  • 8. “ Framework é uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido. Frameworks são projetados com a intenção de facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando nas exigências do software do que com detalhes tediosos de baixo nível do sistema.” fonte: wikipedia Framework “ A Web framework is a collection of packages or modules which allow developers to write Web applications or services without having to handle such low-level details as protocols, sockets or process/thread management. ” fonte : wiki.python.org
  • 9. Desafios da Web Desafios do ambiente web : Múltiplos ambientes a considerar ( browser, servidor) Mais de uma linguagem envolvida Separação design x aplicação Novos paradigmas web 2.0 : Ajax e Rich Internet Applications
  • 10. Dividir para conquistar - MVC Compreendendo cada elemento podemos passar a ter uma visão melhor do todo Podemos usar partes destes elementos em soluções mais simples. O framework deve ser o responsável pela integração destes elementos
  • 11. Camada de Controle É o núcleo da aplicação Responsável por tratar os eventos, as solicitações e as respostas da aplicação Representado por um servidor que aguarda as informações provenientes do navegador e devolve uma resposta quando solicitado
  • 12. Iniciando o uso do Python Resumo : Servidor Web em Python Muito simples As páginas são métodos de classes python Atualmente existem duas versões em uso: 3.01 e 2.2 O navegador passa, através da página HTML, as informações que são tratadas como parâmetros pelas funções. http://www.cherrypy.org/ CherryPy
  • 13. Iniciando o uso do Python Exemplo : import cherrypy class HelloWorld(object): def index(self): return &quot;Hello World!&quot; index.exposed = True # Cherrypy 2.2 #cherrypy.root = HelloWorld() #cherrypy.server.start() cherrypy.quickstart(HelloWorld()) CherryPy CherryPy 3
  • 14. Camada de Apresentação É a aparência do seu sistema Nesta camada são preparadas as páginas que serão exibidas através do uso de módulos de substituição que permitem gerar páginas a partir de modelos ( templates) utilizando tags específicas. Quanto mais isolada das regras de negócio da aplicação mais confortável para os web designers. Existem vários módulos em python para resolver isso : zpt, kid, Genshi, ... Trabalha em conjunto com o HTML, com o Javascript e o CSS.
  • 15. Template kid <?xml version='1.0' encoding='utf-8'?> <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:py=&quot;http://purl.org/kid/ns#&quot;> <head> <title>${title.upper()}</title> </head> <body> <h1 py:content=&quot;title&quot;>Title</h1> <p> A message from Python: </p> <blockquote py:content=&quot;message&quot;> Message goes here. </blockquote> </body> </html>
  • 16. Usando o Template #-*- encoding: utf-8 -*- from kid import Template template = Template(file='hello.kid', title=&quot;Hello World&quot;, message=u&quot;Python é simples !&quot;) print template.serialize()
  • 17. Camada de Persistência Nesta camada temos a oportunidade de gravar as informações em um banco de dados. A escolha do BD é muito importante e pode ser um fator de sucesso ou não da solução A dificuldade surge pela manipulação do banco. Comandos específicos e em várias linhas. A flexibilidade é um fator decisivo para o surgimento de uma camada de interface entre o banco e a aplicação
  • 18. Iniciando o uso do Python Object-Relational Mappers Exemplos : SQLObject, STORM, SQLALCHEMY Permite criar uma camada de abstração entre o programador e o banco de dados, simplificando o código e melhorando a sua compreensão. O uso do BD fica mais prático, porque você acessa os registros ”diretamente” ORM
  • 19. SQLObject SQLObject é um ”wrapper” feito em python para um bancos de dados. O Objetivo é criar um nível abstração para o pgrogramador, de forma a evitar os comandos SQL. Atualmente pode ser utilizado com os seguintes bancos : MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL Server e Oracle. http://www.sqlobject.org/
  • 20. SQLObject Cada tabela se transforma em uma classe Cada linha da tabela é uma instância As colunas se tornam atributos class Pessoa(SQLObject): nome = StringCol() sobrenome = StringCol() emails = MultipleJoin(”Email”) class Email(SQLOBject): pessoa = ForeignKey(”Pessoa”) tipo = EnumCol([”casa”, ”trabalho”]) correio = StringCol()
  • 21. # -*- encode: latin -*- from sqlobject import * import os # Inicializa o banco db_filename = os.path.abspath(&quot;data.db&quot;) connection_string = &quot;sqlite:&quot; + db_filename connection = connectionForURI(connection_string) sqlhub.processConnection = connection # [continua] SQLObject
  • 22. # Tabela person do banco class Person(SQLObject): firstName = StringCol() middleInitial = StringCol(length = 1, default=None) lastName = StringCol() # Criar a uma tabela nova Person.createTable() # Grava uma linha nova no BD Person(firstName =&quot;Romeu&quot;, lastName=&quot;silas&quot;) SQLObject
  • 23. Juntando tudo ... Automação CRUD Admin interface Templates e widgets Autenticação e controle de acesso Proteção contra Sql Injection
  • 24. Frameworks Python Zope/Plone TurboGears Django Web2py Pylons ...
  • 25. Iniciando o uso do Python Composto pelos seguintes módulos : MochKit / Scriptaculous Kid / Geshi CherryPy SQLObject / SQLAlchemy TurboGears
  • 26. Estrutura monolítica Contém engine de templates e um ORM integrado Interface de administração URL elegantes Muito boa documentação Grande comunidade no Brasil Django
  • 27. - Site oficial : www.python.org - Site oficial no Brasil : www.pythonbrasil.com.br - Manual Referência : http://docs.python.org/ref/ref.html - Tutorial ( Português) : http://www.python.org/doc/current/tut/tut.html Alguns endereços : Referências
  • 28. Lista SL-RJ : groups.google.com/group/slrj Lista PythonRio : br.groups.yahoo.com/group/pythonrio/ Mais alguns endereços : Referências
  • 29. - Python in a Nutshell – Alex Martelli – O'Reilly - Python Cookbook – Alex Martelli e David Ascher - O'Reilly - Dive Into Python – Mark Pilgrim ( http://www.diveintopython.org/ ) - Aprendendo Python - Mark Lutz e David Ascher Livros : Referências
  • 31. Obrigado !! Luiz Guilherme F. Aldabalde [email_address]