• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Entendendo Frameworks web com Python
 

Entendendo Frameworks web com Python

on

  • 3,111 views

Apresentação feita no Flisol 2009 - UERJ

Apresentação feita no Flisol 2009 - UERJ
Apresentar os elementos que compõem um Framework para explicar o seu funcionamento

Statistics

Views

Total Views
3,111
Views on SlideShare
2,974
Embed Views
137

Actions

Likes
0
Downloads
34
Comments
0

4 Embeds 137

http://pythonrio.org 126
http://www.pythonrio.org 8
http://www.slideshare.net 2
http://posterous.com 1

Accessibility

Upload Details

Uploaded via as OpenOffice

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

    Entendendo Frameworks web com Python Entendendo Frameworks web com Python Presentation Transcript

    • 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]