31
Filipe Rafael Gomes Varjão

Python e Django

  • Upload
    pugpe

  • View
    1.010

  • Download
    6

Embed Size (px)

DESCRIPTION

Palestra ministrada por Filipe Varjão no VII Encontro do PUG-PE realizado em 18/09

Citation preview

Page 1: Python e Django

Filipe Rafael Gomes Varjão

Page 2: Python e Django

Django é um framework escrito em Python

Page 3: Python e Django

História do Django

ERA UMA VEZ...

Uma equipe de jornalista da Lawrence Journal Word http://www2.ljworld.com/

Ambiente de constantes modificações e prazos estreitos

Consequência nasce o Django com objetivo de atender os curtos prazos (é um framework para desenvolvimento rápido para web)

O nome Django em homenagem ao guitarrista de jazz Django Reinhardt

Page 4: Python e Django

História do Django

ERA UMA VEZ...

Em 2005 mais maduro e eficaz com capacidade de ser aplicado a vários tipos de site de alto tráfego, torna-se projeto público (Open-Source)

Sob licença da BSD (Berkeley Software Distribution)

Somente em Junho 2008, criou-se a Django Software Foundation http://www.djangoproject.com/foundation/

O Django adota a filosofia DRY(Don't Repeat Yourself) http://c2.com/cgi/wiki?DontRepeatYourself

Page 5: Python e Django

Características Django

O framework web para perfeccionistas com prazos...

O Django utiliza o padrão MVC (model-view-controller)é um padrão de arquitetura de software que visa separar a

lógica de negócio da lógica de apresentação

Model - é usado para definir e gerenciar o domínio da informação.

View - é apresenta o modelo de forma adequada na saída de dados.

Controller – rebebe a entrada de dados e inicia a resposta (direcionada) ao invocar objetos do modelo.

Page 6: Python e Django

Características Django

padrão MVC (model-view-controller)

Page 7: Python e Django

Características DjangoO framework web para perfeccionistas com prazos...

O Djando usa o mapeamento Objeto-Relacional (ORM)

ORM é uma técnica de desenvolvimento utilizada para programação orientada a objetos, utilizando BD relacionais.

As tabelas do banco de dados são representadas através de classes e os registros de cada tabela são representados como instâncias das classes correspondentes.

Com isso o programador não se preocupa com os comandos da linguagem SQL (que também é possível)

Page 8: Python e Django

Características Django

O framework web para perfeccionistas com prazos...

O Django fornece a API (Application Programming Interface) shell e Administrativa

Formulários

URL's Elegantes (expressão regular)

Sistema de Templates extensível e amigável (design, conteúdo e código”Python”)

Internacionalização (aplicações multi-idioma, tradução)

Page 9: Python e Django

Django

mãos a obra !!!!!

Page 10: Python e Django

Django

mãos a obra!! ..

Certificado que o Django está instalado direcione o caminho da sua aplicação /workspace/pugpe … Obs: nunca por sua aplicação no diretório root.

django-admin.py startproject sitePugpe

SitePugpe/__init__.pymanage.pysettings.pyurls.py

Page 11: Python e Django

Django

Rodando o servidor

python manage.py runserver

python manage.py runserver 8080

python manage.py runserver 0.0.0.0:8000

Acesse:. http://127.0.0.1:8000/

Page 12: Python e Django

Django

settings – é um modulo Python com várias representações do Django (configuração).

python manage.py syncdb

DATABASES = {'ENGINE': _ _ _ _ 'NAME': _ _ _ _ _

Page 13: Python e Django

Django

Startando a aplicação

python manage.py startapp Pugweb

Pugweb/__init__.pymodels.pyviews.py

Page 14: Python e Django

Django

Criando nossos models (simples classes em Python, tabelas do bando de dados) dentro de Pugweb/models.py

class EncontroPugPe(models.Model): tema_palestra = models.CharField(max_length=200) palestrante = models.CharField(max_length=200) data = models.DateTimeField('data')

Page 15: Python e Django

Django

Criando nossos models (simples classes em Python, tabelas do bando de dados) dentro deVIIencontroPugPe/models.py

O Django suporta todos os relacionamentos de banco de dados comuns: muitos-para-um, muitos-para-muitos e um-para-um

class Comentarios(models.Model): encontroPugPe = models.ForeignKey(EncontroPugPe) comentario = models.CharField(max_length=200) contagem = models.IntegerField()

Page 16: Python e Django

Django

Criando models

Cria o esquema do bando de dados para a aplicação.

Cria uma API de acesso para os objetos criados e seus valores no banco.

Obs.: incluir nossa aplicação nas configurações

settings.py/ INSTALLED_APPS = (

'sitePugpe.Pugweb' )

python manage.py sql Pugweb

Page 17: Python e Django

Django

BEGIN;CREATE TABLE "Pugweb_encontropugpe" ( "id" integer NOT NULL PRIMARY KEY, "tema_palestra" varchar(200) NOT NULL, "palestrante" varchar(200) NOT NULL, "data" datetime NOT NULL);CREATE TABLE "Pugweb_comentarios" ( "id" integer NOT NULL PRIMARY KEY, "encontroPugPe_id" integer NOT NULL REFERENCES "Pugweb_encontropugpe" ("id"), "comentario" varchar(200) NOT NULL, "contagem" integer NOT NULL);COMMIT;

Page 18: Python e Django

Django

Agora atualizaremos as tabelas do banco de dados com o comando

Utilizando a API shell no terminal no diretório do desenvolvimento /workspace/sitePugpe$

python manage.py syncdb

python manage.py shell

python manage.py syncdb

Page 19: Python e Django

Django

Liberando a API do site de administração do Django

Adicione o "django.contrib.admin" no settings.py no campo de INSTALLED_APPS (padrão remova o símbolo de comentário)

Rode novamente o comando syncdb para a aplicação gerar as tabelas relacionais no banco de dados

Como o Django fornece essa API administrativa via browser vem por padrão seu direcionamento nas urls.py sendo somente necessário retirar os símbolos de comentários

python manage.py syncdb

Page 20: Python e Django

Django

Liberando a API do site de administração do Djangofrom django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')),

# Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin: (r'^admin/(.*)', admin.site.root),)

Page 21: Python e Django

Django

Editando a API do site de administração do Django

Adicione os objetos na interface de administração

Crie um novo arquivo indicando os objetos relacionados a sua aplicação de o nome de admin.py e salve dentro do diretório da aplicação /Pugweb/admin.py

from Pugweb.models import *from django.contrib import admin

admin.site.register(EncontroPugPe)

Page 22: Python e Django

Django

Editando a API do site de administração do Django

Crie um classe administrativa da sua classe já definida e faça com que a interface seja mostre aquilo que lhe e interessante

from Pugweb.models import *from django.contrib import admin

class EncontroPugPeAdmin(admin.ModelAdmin):fields = ['data', 'tema_palestra', 'palestrante']

admin.site.register(EncontroPugPe, EncontroPugPeAdmin)admin.site.register(Comentarios)

Page 23: Python e Django

Django

Editando o template da API administrativa

No settings.py temos a opção de direcionarmos os templates da página, basta mostrar a direção do diretório em que estarão os templates

Pode-se copiar (django/contrib/admin/templates) os templates da API administrativa para os modificar

TEMPLATE_DIRS = ( '/home/filipe//home/filipe/workspace/sitePugpe/templates'

)

Page 24: Python e Django

Django

Criando urls

Quando se faz a chamada da url no browser de uma página construída em Django, o sistema busca na variável ROOT_URLCONF nos settings.py

Que por padão já esta direcionada para a aplicação ROOT_URLCONF = 'sitePugpe.urls', sendo que essa chamada e comparada a lista de urls descritas em urls.py

Page 25: Python e Django

Django

Criando urls

Expressões regulares são uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres

Como os padrões de URL são expressões regulares, realmente não há limites para o que você possa fazer com elas.

Page 26: Python e Django

Django

Criando urls

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('sitePugpe.Pugweb.views', (r'^index/$', 'index'), (r'^listaPalestras/$', 'listaPalestras'), (r'^admin/', include(admin.site.urls)),)

Page 27: Python e Django

Django

Contruindo as views dentro de sitePugpe/Pugweb/views.py as views consistem em funções def de Python

def index(request): return HttpResponse("Hello, world.")

def listaPalestras(request):c = RequestContext(request)x = EncontroPugPe.objects.all()lista = [ ]for i in x:

lista += [ i.tema_palestra ]c['lista'] = listareturn render_to_response('listaindex.html', c)

Page 28: Python e Django

Django# Create your views here.from django.http import HttpResponsefrom django.shortcuts import render_to_responsefrom Pugweb.models import*from django.template import Context, loader, RequestContext

def index(request): return HttpResponse("Hello, world.")

def listaPalestras(request):c = RequestContext(request)x = EncontroPugPe.objects.all()lista = []for i in x:

lista += [ i.tema_palestra ]c['lista'] = listareturn render_to_response('listaindex.html', c)

Page 29: Python e Django

Django

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('sitePugpe.Pugweb.views', (r'^index/$', 'index'), (r'^listaPalestras/$', 'listaPalestras'), (r'^admin/', include(admin.site.urls)),)

Page 30: Python e Django

Django

Criando a página html

{% if lista %}{% for i in lista %}

{{ i }}{% endfor%}

{% endif %}

Page 31: Python e Django

Referências

http://www.python.org/

http://www2.ljworld.com/

http://docs.djangoproject.com/en/dev/faq/general/#what=doe

http://www.djangoproject.com/foundation/

http://c2.com/cgi/wiki?DontRepeatYourself