python e django

Download Python e Django

Post on 05-Jul-2015

900 views

Category:

Documents

4 download

Embed Size (px)

DESCRIPTION

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

TRANSCRIPT

  • Filipe Rafael Gomes Varjo

  • Django um framework escrito em Python

  • Histria do DjangoERA UMA VEZ... Uma equipe de jornalista da Lawrence Journal Word http://www2.ljworld.com/ Ambiente de constantes modificaes e prazos estreitos Consequncia nasce o Django com objetivo de atender os curtos prazos ( um framework para desenvolvimento rpido para web) O nome Django em homenagem ao guitarrista de jazz Django Reinhardt

  • Histria do DjangoERA UMA VEZ... Em 2005 mais maduro e eficaz com capacidade de ser aplicado a vrios tipos de site de alto trfego, torna-se projeto pblico (Open-Source) Sob licena 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

  • Caractersticas DjangoO framework web para perfeccionistas com prazos... O Django utiliza o padro MVC (model-view-controller) um padro de arquitetura de software que visa separar a lgica de negcio da lgica de apresentaoModel - usado para definir e gerenciar o domnio da informao.View - apresenta o modelo de forma adequada na sada de dados.Controller rebebe a entrada de dados e inicia a resposta (direcionada) ao invocar objetos do modelo.

  • Caractersticas Djangopadro MVC (model-view-controller)

  • Caractersticas DjangoO framework web para perfeccionistas com prazos... O Djando usa o mapeamento Objeto-Relacional (ORM)ORM uma tcnica de desenvolvimento utilizada para programao orientada a objetos, utilizando BD relacionais.As tabelas do banco de dados so representadas atravs de classes e os registros de cada tabela so representados como instncias das classes correspondentes.Com isso o programador no se preocupa com os comandos da linguagem SQL (que tambm possvel)

  • Caractersticas DjangoO framework web para perfeccionistas com prazos... O Django fornece a API (Application Programming Interface) shell e Administrativa Formulrios URL's Elegantes (expresso regular) Sistema de Templates extensvel e amigvel (design, contedo e cdigoPython) Internacionalizao (aplicaes multi-idioma, traduo)

  • Django

    mos a obra !!!!!

  • Djangomos a obra!! .. Certificado que o Django est instalado direcione o caminho da sua aplicao /workspace/pugpe Obs: nunca por sua aplicao no diretrio root.

    django-admin.py startproject sitePugpeSitePugpe/__init__.pymanage.pysettings.pyurls.py

  • Django Rodando o servidor

    python manage.py runserverpython manage.py runserver 8080python manage.py runserver 0.0.0.0:8000Acesse:. http://127.0.0.1:8000/

  • Django settings um modulo Python com vrias representaes do Django (configurao).

    python manage.py syncdb

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

  • Django Startando a aplicao

    python manage.py startapp PugwebPugweb/__init__.pymodels.pyviews.py

  • 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')

  • 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()

  • Django Criando modelsCria o esquema do bando de dados para a aplicao.Cria uma API de acesso para os objetos criados e seus valores no banco.Obs.: incluir nossa aplicao nas configuraessettings.py/ INSTALLED_APPS = ( 'sitePugpe.Pugweb' )

    python manage.py sql Pugweb

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

  • Django

    Agora atualizaremos as tabelas do banco de dados com o comando

    Utilizando a API shell no terminal no diretrio do desenvolvimento /workspace/sitePugpe$

    python manage.py syncdbpython manage.py shellpython manage.py syncdb

  • Django Liberando a API do site de administrao do DjangoAdicione o "django.contrib.admin" no settings.py no campo de INSTALLED_APPS (padro remova o smbolo de comentrio)Rode novamente o comando syncdb para a aplicao gerar as tabelas relacionais no banco de dados

    Como o Django fornece essa API administrativa via browser vem por padro seu direcionamento nas urls.py sendo somente necessrio retirar os smbolos de comentrios

    python manage.py syncdb

  • Django Liberando a API do site de administrao do Django

    from 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),)

  • Django Editando a API do site de administrao do DjangoAdicione os objetos na interface de administraoCrie um novo arquivo indicando os objetos relacionados a sua aplicao de o nome de admin.py e salve dentro do diretrio da aplicao /Pugweb/admin.py

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

    admin.site.register(EncontroPugPe)

  • Django Editando a API do site de administrao do DjangoCrie um classe administrativa da sua classe j definida e faa 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)

  • DjangoEditando o template da API administrativaNo settings.py temos a opo de direcionarmos os templates da pgina, basta mostrar a direo do diretrio em que estaro 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')

  • DjangoCriando urlsQuando se faz a chamada da url no browser de uma pgina construda em Django, o sistema busca na varivel ROOT_URLCONF nos settings.pyQue por pado j esta direcionada para a aplicao ROOT_URLCONF = 'sitePugpe.urls', sendo que essa chamada e comparada a lista de urls descritas em urls.py

  • DjangoCriando urlsExpresses regulares so uma forma concisa e flexvel de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padres de caracteresComo os padres de URL so expresses regulares, realmente no h limites para o que voc possa fazer com elas.

  • DjangoCriando 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)),)

  • DjangoContruindo as views dentro de sitePugpe/Pugweb/views.py as views consistem em funes 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)

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

  • 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)),)

  • DjangoCriando a pgina html

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

  • Referncias http://www.python.org/http://www2.ljworld.com/http://docs.djangoproject.com/en/dev/faq/general/#what=doehttp://www.djangoproject.com/foundation/http://c2.com/cgi/wiki?DontRepeatYourself