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.
Conteúdo Introdução PythonConceituando 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 objetivodesta 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 Pythonfoi 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çãoPor 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 WebDesafios 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 usodo 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
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.
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ênciaNesta 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 usodo 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 tabelase 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()
# Tabela persondo 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
Iniciando o usodo 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.
- Siteoficial : 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 ina 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