SlideShare uma empresa Scribd logo
Python mudando o modo de
desenvolver para a internet
        Marcos Daniel Petry
Quem sou eu?
•   Marcos Daniel Petry =)
•   Bacharel em Ciências da Computação
•   Desenvolvedor Python desde 2005
•   Já programei em Delphi, VB, PHP, Java ...
Quem está aí?

  • Desenvolvedores?
  • Conhecem python?
  • Trabalham com python?
Há muito tempo atrás...
•   Não havia um estrutura determinada
•   Poucos padrões
•   O objetivo era muito diferente do que é hoje
•   Necessidade de algo melhor...
Python mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Iniciada a evolução...
•   Não é necessário escrever todo html "no braço"
•   O servidor Web Recebe a requisição
•   Executa o código CGI e devolve a informação processada
•   Possibilidade de usar C, Perl, TCL....
A era PHP e ASP
• Inicio da divisão de culturas
  – Software proprietário x Software livre
  – "guerra de linguagens"
• O mesmo objetivo de CGI, mas com uma melhor
  tecnologia e mais fácil de entender
• Os sites são orientados a páginas
• Várias iniciativas de integrar outras linguagens
  com o servidor Web
=(
=(((
Python mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Precisamos trabalhar com
aplicações e não páginas!
Frameworks!
Python mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Mas por que Python?
•   Criada para ser explícita e de fácil aprendizado
•   Orientada a Objetos, mas multi-paradigma
•   Multi-plataforma
•   Software Livre
•   Compilada, interpretada e interativa
•   Muitas bibliotecas
•   Curva de aprendizado curta
•   Divertida!
Segurança
700                                                         • Por Linguagem:
600                                                         • Python: 82
500                                                         • PHP: 11899
400



300



200



100



  0
      Joomla Drupal   Zend   Cake   Zope   Plone   Django


                                       Dados da National Vulnerability Database, em 18/06/2010
                                       http://web.nvd.nist.gov/view/vuln/search
O Resultado?
O que é necessário para um Framework
WEB?

  •   Alto nível
  •   Orientado a aplicações
  •   Que respeite um paradigma de projeto
  •   Desenvolvimento rápido
  •   Open Source =)
Como conseguimos isso?
•   Mapemento objeto-relacional
•   Mapeador de URL
•   Sistema de Templates
•   Ferramentas auxiliares
    –   Formulários e Validação
    –   Autenticação
    –   Controle de sessões
    –   Administração
Resultado?
• Rápida implementação
• Facil manutenção
Mapeamento Objeto-Relacional
• Escrever SQL é descecessário na maioria dos casos
• Independência de Banco de Dados

• Existem vários, independente do framework
  escolhido
  –   SQL Objetct
  –   Alchemy
  –   Mongo-Engine
  –   Divan
Mapeamento Objeto-Relacional
class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)




CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);
Mapeamento Objeto-Relacional

class Person(models.Model):
    name = models.CharField(max_length=128)
    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')
    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
Mapeamento Objeto-Relacional
>>> ringo = Person.objects.create(name="Ringo Starr")
>>> paul = Person.objects.create(name="Paul McCartney")
>>> beatles = Group.objects.create(name="The Beatles")
>>> m1 = Membership(person=ringo, group=beatles,
...     date_joined=date(1962, 8, 16),
...     invite_reason= "Needed a new drummer.")
>>> m1.save()
>>> beatles.members.all()
[<Person: Ringo Starr>]
>>> ringo.group_set.all()
[<Group: The Beatles>]
>>> m2 = Membership.objects.create(person=paul, group=beatles,
...     date_joined=date(1960, 8, 1),
...     invite_reason= "Wanted to form a band.")
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
Mapeador de Endereços
• Mantém a estrutura do seu site controlada
  – Mais segurança
• Mais fácil de debugar em caso de erro no site
• Endereços fáceis de entender
Mapeador de Endereços


 urlpatterns = patterns('noticias.views',
     url(r'^$', 'index', name="pr­index"),
     url(r'^noticia/(?P<secao>)/(?P<categoria>)/$', 'secao',  name="not­secao"),
     url(r'^noticia/(?P<nome>[­dw]+).html$', 'artigo', name='not­detalhe'),
 )
Mapeador de Endereços - Resultado?
http://www.meusite.com/noticias.php?secao=12&categoria=12

http://www.meusite.com/noticias_ver.php?id=12
Mapeador de Endereços - Resultado?
http://www.meusite.com/noticias.php?secao=12&categoria=12

http://www.meusite.com/noticias_ver.php?id=12


http://www.meusite.com/noticias/esportes/selecao/

http://www.meusite.com/noticias/selecao-brasileira-ganha-da-
coreia-do-norte.html
Sistema de Templates
• Separação de código e layout

• Existem vários, independente do framework
  escolhido
  –   Cheetah
  –   Genshi
  –   Jinja
  –   Mako
  –   ...
Sistema de Templates
{% extends "base_templ.html" %}
{% block title %}{{ titulo }}{% endblock %}
{% block content %}
<h1>{{ titulo }}</h1>


{% for noticia in noticias_lista %}
<h2>
  <a href="{{ noticia.get_absolute_url }}">
    {{ noticia.titulo|upper }}
  </a>
</h2>
<p>{{ noticia.descricao|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}
Ferramentas Auxiliares
• Propicia o desenvolvimento rápido
• Reutilização de código
Frameworks Python
•   Plone/Zope
•   Pylons
•   TurboGears
•   Django
Pylons
• "Full Stack", extremamente flexivel
• Reúsa vários componenetes já existentes
• A substituiçã ode componentes é muito fácil
Turbo Gears
• Full stack, mas também com reúso de
  componentes
• Turbo Gears roda em cima do Pylons
Django
•   O mais popular no mundo Python
•   Não reusa nada
•   Prioriza a integração interna de componentes
•   Quebra o projeto em aplicações
•   Facilita muito o reúso, já que há várias apps
    disponibilizadas

• Eu uso ele! =)
Zope/Plone

Servido se aplicações   Content Management
                            Framework
Google App Engine
•   Aplicações na Infraestrutura do Google
•   Autenticação pelo Google Accounts
•   Big Table
•   Vários Frameworks
Onde procurar ajuda?
• Programadores python tem uma certa aversão a
  fóruns =P

• Documentações
• Listas de Discussão
• IRC
Dúvidas?
Obrigado!
• E-mail: marcospetry@gmail.com
• Meu Blog: http://mdpetry.net
• Twitter: @petry

Mais conteúdo relacionado

PPTX
Sencha touch
PDF
Palestra Carreira Java Bahia Meeting
PPT
Javascript levado a serio
PPTX
A importância de padronizar nosso CSS
PDF
Laboratório Audivisual Hipermedia Aula3 4 13 22 03
ODP
Geodjango and HTML 5
KEY
Python 06
PPTX
Django user permissions in your templates
Sencha touch
Palestra Carreira Java Bahia Meeting
Javascript levado a serio
A importância de padronizar nosso CSS
Laboratório Audivisual Hipermedia Aula3 4 13 22 03
Geodjango and HTML 5
Python 06
Django user permissions in your templates

Destaque (20)

PDF
First steps with django cms
KEY
Python 07
PDF
Team up Django and Web mapping - DjangoCon Europe 2014
PDF
GeoDjango: Putting Django on the Map
PDF
Django cms best practices
PDF
Rodando e instalandosistemas operacionaispela rede - Nasser Othman Rahman - ...
PDF
Ata de cassação prefeita de luzinopolis
PDF
Edital elson ribeiro
PDF
Adeus MS Office - Luiz Henrique Rauber Rodrigues
PPT
DOC
Trabalho prof bibliotec desenvolvimento de novas competências
PPT
Hepatitis c abril-05
PPT
15 enf inf int
PPT
Análise do código de ética para os profissionais
PDF
Leitura complementar 02 - Computadores eletromecânicos
PPT
Patología testicular
PPT
Vivências em Biodanza
PPT
Neumonia pediatria
PPT
Palestra web revistaspet
PPTX
Analise comparativa
First steps with django cms
Python 07
Team up Django and Web mapping - DjangoCon Europe 2014
GeoDjango: Putting Django on the Map
Django cms best practices
Rodando e instalandosistemas operacionaispela rede - Nasser Othman Rahman - ...
Ata de cassação prefeita de luzinopolis
Edital elson ribeiro
Adeus MS Office - Luiz Henrique Rauber Rodrigues
Trabalho prof bibliotec desenvolvimento de novas competências
Hepatitis c abril-05
15 enf inf int
Análise do código de ética para os profissionais
Leitura complementar 02 - Computadores eletromecânicos
Patología testicular
Vivências em Biodanza
Neumonia pediatria
Palestra web revistaspet
Analise comparativa
Anúncio

Semelhante a Python mudando o modo de desenvolver para a web - Marcos Daniel Petry (20)

PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
PPT
XPT Framework
PDF
ODP
Entendendo Framework Web com Python
ODP
Entendendo Frameworks web com Python
KEY
Django - Desenvolvimento web ágil com Python
KEY
Python 08
PDF
O que move a web atualmente?
PPT
Tendências do Mercado de Internet
PDF
Desenvolvimento web com python e django
PDF
Palestra - Symfony Framework MVC PHP 5
PDF
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
PDF
Primeiros Passos Para o Desenvolvimento Web - FLISOLGO 2011
PPTX
IntroduçãO Ao Desenvolvimento Web 2
PDF
Criando Websites a Jato com Django - Marcos Daniel Petry
PPT
A Linguagem Php
ZIP
Python e Django na Globo.com
PDF
Criando websites a jato com Django
PDF
Desenvolvimento Web com Software Livre
PPTX
Visão Geral De Desenvolvimento Web Sre 2012
Django: desenvolvendo aplicações web de maneira simples e rápida!
XPT Framework
Entendendo Framework Web com Python
Entendendo Frameworks web com Python
Django - Desenvolvimento web ágil com Python
Python 08
O que move a web atualmente?
Tendências do Mercado de Internet
Desenvolvimento web com python e django
Palestra - Symfony Framework MVC PHP 5
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Primeiros Passos Para o Desenvolvimento Web - FLISOLGO 2011
IntroduçãO Ao Desenvolvimento Web 2
Criando Websites a Jato com Django - Marcos Daniel Petry
A Linguagem Php
Python e Django na Globo.com
Criando websites a jato com Django
Desenvolvimento Web com Software Livre
Visão Geral De Desenvolvimento Web Sre 2012
Anúncio

Mais de Tchelinux (20)

PDF
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
PDF
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
PDF
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
PDF
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
PDF
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
PDF
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
PPTX
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
PDF
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
PDF
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
PDF
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
PDF
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
PDF
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
PDF
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
ODP
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
PDF
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
PDF
Com que ônibus eu vou? Uma gentil introdução ao Python.
PDF
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
PDF
Não deixe para testar depois o que você pode testar antes.
PDF
Desenvolvendo jogos com pygame
PDF
Essa câmera faz fotos muito boas, né?
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Com que ônibus eu vou? Uma gentil introdução ao Python.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
Não deixe para testar depois o que você pode testar antes.
Desenvolvendo jogos com pygame
Essa câmera faz fotos muito boas, né?

Último (19)

PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
COBITxITIL-Entenda as diferença em uso governança TI
Aula04-Academia Heri- Tecnologia Geral 2025
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula 18 - Manipulacao De Arquivos python
Apple Pippin Uma breve introdução. - David Glotz
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Processos na gestão de transportes, TM100 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...

Python mudando o modo de desenvolver para a web - Marcos Daniel Petry