Este documento fornece uma introdução aos frameworks web com Python, discutindo conceitos como MVC, templates, ORM e frameworks como Django. Explica como frameworks abstraem detalhes complexos e facilitam o desenvolvimento web.
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 "Hello World!" 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.
16. Usando o Template #-*- encoding: utf-8 -*- from kid import Template template = Template(file='hello.kid', title="Hello World", message=u"Python é simples !") 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("data.db") connection_string = "sqlite:" + 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 ="Romeu", lastName="silas") SQLObject
23. Juntando tudo ... Automação CRUD Admin interface Templates e widgets Autenticação e controle de acesso Proteção contra Sql Injection
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