SlideShare a Scribd company logo
1 of 49
Download to read offline
Aplicações rápidas para Web
                com



        Diemesleno Souza Carvalho
Software Freedom Day - Campo Grande – MS
          20 de Setembro de 2008
Tópicos abordados

•   Apresentação do framework.
•   A documentação é importante?
•   Mercado de trabalho.
•   Instalação do Django no GNU/Linux.
•   Criação de uma aplicação simples. *



* Caso o tempo permita.
Apresentação

•   Framework Web de alto nível.
•   Desenvolvimento rápido.
•   Automatiza coisas repetitivas.
•   Segue boas práticas de programação.
•   Utiliza os princípios do DRY e ORM.
•   Utiliza padrões MVC/MTV.
Apresentação




MVC x MTV
Apresentação

             Models
Modelos de dados.

    class Exemplo(models.Model):
         pass
Apresentação

      Templates
{% tags %}

{{ variáveis }}
Apresentação

                           Views
Responsável pela parte que ficará visível.

def index(request):
        lista = Emprego.objects.order_by(‘-publicado’)[:10]
        return render_to_response(‘vagas/index.html’,{‘lista’:lista})
Apresentação
• Lawrence Journal-World
  (http://www.ljworld.com)
Apresentação
• Guitarrista Belga
• Grande nome do Jazz

• Django Reinhardt
A documentação é importante?

•   Conteúdo sempre atualizado.
•   Tutoriais passo-a-passo.
•   Tradução para português quase completa.
•   Excelentes livros já lançados. (inglês)
Mercado de trabalho




Há vagas!
Mercado de trabalho


•   http://www.pythonbrasil.com.br/moin.cgi/OportunidadesDeEmprego (42 Vagas)
•   http://djangogigs.com/ (242 Vagas)
•   http://simonwillison.net/2008/Jan/18/django/ (74 Vagas)
•   http://www.python.org/community/jobs/ (221 Vagas)
Mercado de trabalho
Curiosidade…




Do mesmo criador do digg
Curiosidade…




  Leah Culver
Curiosidade…




    Leah Culver
Instalação
• Python 2.3+
• Database: PostgreSQL, MySQL, SQLite3
• Django 1.0
Instalando Django (1.0)

• apt-get install python-django

• http://www.djangoproject.com/download/
  – tar xvzf Django-1.0.tar.gz
  – cd Django-1.0
  – sudo python setup.py install
Prática


Desenvolvendo uma aplicação simples
Prática
Projeto (site) : empresa


     /admin/
          Application : admin
       Application : admin
     Aplicação : admin




    /vagas/
      Aplicação : vagas          Database
Prática
django-admin.py startproject empresa

empresa
  __init__.py       pacote/*
  manage.py        gerenciador/*
  settings.py      configurações/*
  urls.py         rotas/*
Prática
python manage.py startapp vagas

cd vagas
  __init__.py   app/pacote/*
  models.py     app/models/*
  views.py      app/views/*
Prática
cd empresa
Editar  settings.py

ADMINS = (
  (‘Diemesleno Souza Carvalho’, ‘diemesleno@gmail.com’),
)

DATABASE_ENGINE  = ‘mysql’
DATABASE_NAME    = ‘empresa’
DATABASE_USER     = ‘root’
DATABASE_PASSWORD = ‘123’
DATABASE_HOST     = ‘localhost’
Prática
TIME_ZONE = ‘America/Campo Grande’

LANGUAGE_CODE = ‘pt-br’

TEMPLATE_DIRS = (
  ‘/home/diemesleno/livre/templates/’,
)
Criando um Modelo
Editando             empresa/vagas/models.py

from django.db import models

# Criando uma classe para o “Local”

class Local(models.Model):
         cidade = models.CharField(max_length=50)
         estado = models.CharField(max_length=50, null=True, blank=True)
         pais = models.CharField(max_length=50)
…
Criando um Modelo
…
# Definindo a função para o retorno


   def __unicode__(self):
        if self.estado:
                  return “%s, %s, %s” % (self.cidade, self.estado, self.pais)
        else:
                  return “%s, %s” % (self.cidade, self.pais)
Criando um Modelo
…
# Criando a classe “Emprego”



class Emprego(models.Model):
        publicado = models.DateField()
        titulo    = models.CharField(max_length=50)
        descricao = models.TextField()
        local     = models.ForeignKey(Local)


…
Criando um Modelo
…
# Definindo a função para retorno da classe

   def __unicode__(self):
        return “%s (%s)” % (self.titulo, self.local)
Ativando o modelo(Aplicação)
Editar           settings.py               INSTALLED_APPS

    INSTALLED_APPS = (
          ‘django.contrib.auth’,
          ‘django.contrib.contenttypes’,
          ‘django.contrib.sessions’,
          ‘django.contrib.sites’,
          ‘django.contrib.admin’,
          ‘django.contrib.admindocs’,
          ‘empresa.vagas’,
)
Visualizando o SQL



python manage.py sql vagas
Executando o SQL



python manage.py syncdb
Interface Admin

cd vagas

touch admin.py

vim admin.py
Interface Admin
from empresa.vagas.models import Local
from empresa.vagas.models import Emprego
from django.contrib import admin

Class LocalAdmin(admin.ModelAdmin):
        list_display = (“titulo”, “descricao”, “local”, “publicado”)
        ordering     = [“-publicado”]
        search_fields = (“titulo”, “descricao”)
        list_filter   = (“local”,)

admin.site.register(Local, LocalAdmin)
admin.site.register(Emprego, EmpregoAdmin)
Interface Admin

python manage.py runserver

http://localhost:8000/admin/
Design das URLs
vim url.py

from django.conf.urls.defaults import *
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns(‘empresa.vagas.views’,
          (r’^vagas/$’, ‘index’),
          (r’^vagas/(?P<object_id>d+)/$’, ‘detail’),
          (r’^admin/(.*)’, admin.site.root),
)
Editanto a view
cd vagas
from django.shortcuts import get_object_or_404, render_to_response
from vagas.models import Emprego

def index(request):
   lista = Emprego.objects.order_by(‘-publicado’)[:10]
   return render_to_response(‘vagas/index.html’,
                                   {‘lista’: lista})

…
Editando a view
…

def detail(request, object_id):
   vaga = get_object_or_404(Emprego, pk=object_id)
   return render_to_response(‘vagas/detail.html’,
                                  {‘vaga’: vaga})
Editar os templates
Relembrando: (settings.py)

TEMPLATE_DIRS = (
  ‘/home/diemesleno/livre/templates/’,
)

cd /home/diemesleno/livre/

mkdir templates

cd templates
Editar os templates
vim base.html

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
        http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3c.org/1999/xhtml xml:lang=“en” lang=“en”>

<head>
   <title> Super Empresa: {% block title %} Page {% endblock %} </title>
          {% block extrahead %} {% endblock %}
</head>
<body>
          {% block content %} {% endblock %}
</body>
</html>
Editar os templates

mkdir empresa

cd empresa

vim base.html
Editar os templates
{% extends “base.html” %}

{% block extrahead %}
<style>
 body { font-style: arial; color: navy; }
 h1 { text-align: center; }
 .job .title { font-size: 120px; font-weight: bold; }
 .job .posted { font-style: italic; }
 a.link { text-decoration: none; }
 a.visited { text-decoration:none; }
 a.hover { text-decoration: underline overline; background: #ffc; color: #FF0000;
</style>
{% endblock %}
Editar os templates
vim index.html

{% extends “vagas/base.html” %}

{% block title %} Lista de vagas {% endblock %}

{% block content %}
         <h1>Lista de vagas</h1>
         <ul>
         {% for vaga in lista %}
                  <li><a href=“{{ vaga.id }}”>{{ vaga.titulo }}</a></li>
         {% endfor %}
         </ul>
{% endblock %}
Editar os templates
vim detail.html

{% extends “vagas/base.html” %}

{% block title %} Detalhes da vaga {% endblock %}

{% block content %}
         <h1>Detalhes da vaga</h1>
                 <div class=“job”>
                          <div class=“title”>
                                   {{ vaga.titulo }}
                                   -
                                   {{ vaga.local }}
                          </div>
…
Editar os templates
…

                  <div class=“posted”>
                           Postado em: {{ vaga.publicado|date: “d-M-Y” }}
                  </div>
                  <div class=“description”>
                           {{ vaga.descricao }}
                  </div>
         </div>
<p>&nbsp;</p>
<a href=“/jobs/”>Voltar</a>
{% endblock %}
Conclusão
•   Escrito em Python.
•   Página de administração simples.
•   Design de URLs elegantes.
•   Modelos do DB.
•   Templates.
•   Desenvolvimento Web Rápido, fácil e
    poderoso com Django.
Referências
• http://djangoproject.com/documentation/
• http://code.djangoproject.com/
• http://groups.google.com/group/django-user
• http://groups.google.com/group/django-
  developers
Principal referência




http://www.google.com.br
Dúvidas




???
Obrigado!
Aplicações rápidas com Django
Software Freedom Day – 20 de agosto de 2008
Campo Grande – Mato Grosso do Sul



Contato:
E-mail: diemesleno@gmail.com
msn: d.lenon@gmail.com
Skype: diemesleno

More Related Content

What's hot

Angular JS, você precisa conhecer
Angular JS, você precisa conhecerAngular JS, você precisa conhecer
Angular JS, você precisa conhecermeet2Brains
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Maurício Linhares
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e TruquesLambda 3
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicosponto hacker
 

What's hot (20)

Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 
JQuery
JQuery JQuery
JQuery
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
Angular JS, você precisa conhecer
Angular JS, você precisa conhecerAngular JS, você precisa conhecer
Angular JS, você precisa conhecer
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04
 
Curso de Introdução - PHP
Curso de Introdução - PHPCurso de Introdução - PHP
Curso de Introdução - PHP
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Introdução a jQuery
Introdução a jQueryIntrodução a jQuery
Introdução a jQuery
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e Truques
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicos
 

Viewers also liked

Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Django, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento webDjango, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento webMayron Cachina
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 

Viewers also liked (13)

Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Django, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento webDjango, Framework Python para desenvolvimento web
Django, Framework Python para desenvolvimento web
 
Django debug-toolbar
Django debug-toolbarDjango debug-toolbar
Django debug-toolbar
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Introdução ao Django
Introdução ao DjangoIntrodução ao Django
Introdução ao Django
 

Similar to Aplicacoes Rapidas Para Web Com Django

Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfGabrielaMota46
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBLuciano Borges
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app enginepugpe
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmoitalomaia
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 

Similar to Aplicacoes Rapidas Para Web Com Django (20)

Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Implementação de
Implementação de Implementação de
Implementação de
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdf
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEB
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Django Tem Ritmo
Django Tem RitmoDjango Tem Ritmo
Django Tem Ritmo
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Design Patterns em Ruby
Design Patterns em RubyDesign Patterns em Ruby
Design Patterns em Ruby
 

More from Diemesleno Souza Carvalho

O mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialO mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialDiemesleno Souza Carvalho
 
Expandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreExpandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreDiemesleno Souza Carvalho
 
Internet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialInternet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialDiemesleno Souza Carvalho
 
E commerce: Da escolha do nicho até a primeira venda
E commerce:  Da escolha do nicho até a primeira vendaE commerce:  Da escolha do nicho até a primeira venda
E commerce: Da escolha do nicho até a primeira vendaDiemesleno Souza Carvalho
 
Computação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiComputação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiDiemesleno Souza Carvalho
 
Iniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidIniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidDiemesleno Souza Carvalho
 
Desenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDesenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDiemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Diemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Diemesleno Souza Carvalho
 
Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Diemesleno Souza Carvalho
 

More from Diemesleno Souza Carvalho (19)

Classificador de imagens com redes neurais
Classificador de imagens com redes neuraisClassificador de imagens com redes neurais
Classificador de imagens com redes neurais
 
O mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrialO mercado e as oportunidades na terceira revolução insdustrial
O mercado e as oportunidades na terceira revolução insdustrial
 
Minicurso android
Minicurso androidMinicurso android
Minicurso android
 
Desenvolvimento Android
Desenvolvimento AndroidDesenvolvimento Android
Desenvolvimento Android
 
Expandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreExpandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software Livre
 
Internet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrialInternet das coisas na terceira revolução industrial
Internet das coisas na terceira revolução industrial
 
E commerce: Da escolha do nicho até a primeira venda
E commerce:  Da escolha do nicho até a primeira vendaE commerce:  Da escolha do nicho até a primeira venda
E commerce: Da escolha do nicho até a primeira venda
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Internet das Coisas
Internet das CoisasInternet das Coisas
Internet das Coisas
 
Computação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry PiComputação física com Arduino e Raspberry Pi
Computação física com Arduino e Raspberry Pi
 
Iniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para androidIniciando no mundo mobile - Programando para android
Iniciando no mundo mobile - Programando para android
 
Palestra TV Digital Interativa - Hora Livre
Palestra TV Digital Interativa - Hora LivrePalestra TV Digital Interativa - Hora Livre
Palestra TV Digital Interativa - Hora Livre
 
Palestra tv digital interativa Dourados
Palestra tv digital interativa DouradosPalestra tv digital interativa Dourados
Palestra tv digital interativa Dourados
 
Desenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital InterativaDesenvolvendo aplicacoes para TV Digital Interativa
Desenvolvendo aplicacoes para TV Digital Interativa
 
Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]Desenvolvimento para tv digital interativa [ dia 2]
Desenvolvimento para tv digital interativa [ dia 2]
 
Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]Desenvolvimento para tv digital interativa [ dia 1]
Desenvolvimento para tv digital interativa [ dia 1]
 
Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]Desenvolvimento para tv digital interativa [ dia 3]
Desenvolvimento para tv digital interativa [ dia 3]
 
ApresentaçAo Joomla
ApresentaçAo JoomlaApresentaçAo Joomla
ApresentaçAo Joomla
 
Mini curso de c#.net
Mini curso de c#.netMini curso de c#.net
Mini curso de c#.net
 

Aplicacoes Rapidas Para Web Com Django

  • 1. Aplicações rápidas para Web com Diemesleno Souza Carvalho Software Freedom Day - Campo Grande – MS 20 de Setembro de 2008
  • 2. Tópicos abordados • Apresentação do framework. • A documentação é importante? • Mercado de trabalho. • Instalação do Django no GNU/Linux. • Criação de uma aplicação simples. * * Caso o tempo permita.
  • 3. Apresentação • Framework Web de alto nível. • Desenvolvimento rápido. • Automatiza coisas repetitivas. • Segue boas práticas de programação. • Utiliza os princípios do DRY e ORM. • Utiliza padrões MVC/MTV.
  • 5. Apresentação Models Modelos de dados. class Exemplo(models.Model): pass
  • 6. Apresentação Templates {% tags %} {{ variáveis }}
  • 7. Apresentação Views Responsável pela parte que ficará visível. def index(request): lista = Emprego.objects.order_by(‘-publicado’)[:10] return render_to_response(‘vagas/index.html’,{‘lista’:lista})
  • 8. Apresentação • Lawrence Journal-World (http://www.ljworld.com)
  • 9. Apresentação • Guitarrista Belga • Grande nome do Jazz • Django Reinhardt
  • 10. A documentação é importante? • Conteúdo sempre atualizado. • Tutoriais passo-a-passo. • Tradução para português quase completa. • Excelentes livros já lançados. (inglês)
  • 12. Mercado de trabalho • http://www.pythonbrasil.com.br/moin.cgi/OportunidadesDeEmprego (42 Vagas) • http://djangogigs.com/ (242 Vagas) • http://simonwillison.net/2008/Jan/18/django/ (74 Vagas) • http://www.python.org/community/jobs/ (221 Vagas)
  • 16. Curiosidade… Leah Culver
  • 17. Instalação • Python 2.3+ • Database: PostgreSQL, MySQL, SQLite3 • Django 1.0
  • 18. Instalando Django (1.0) • apt-get install python-django • http://www.djangoproject.com/download/ – tar xvzf Django-1.0.tar.gz – cd Django-1.0 – sudo python setup.py install
  • 20. Prática Projeto (site) : empresa /admin/ Application : admin Application : admin Aplicação : admin /vagas/ Aplicação : vagas Database
  • 21. Prática django-admin.py startproject empresa empresa __init__.py pacote/* manage.py gerenciador/* settings.py configurações/* urls.py rotas/*
  • 22. Prática python manage.py startapp vagas cd vagas __init__.py app/pacote/* models.py app/models/* views.py app/views/*
  • 23. Prática cd empresa Editar settings.py ADMINS = ( (‘Diemesleno Souza Carvalho’, ‘diemesleno@gmail.com’), ) DATABASE_ENGINE = ‘mysql’ DATABASE_NAME = ‘empresa’ DATABASE_USER = ‘root’ DATABASE_PASSWORD = ‘123’ DATABASE_HOST = ‘localhost’
  • 24. Prática TIME_ZONE = ‘America/Campo Grande’ LANGUAGE_CODE = ‘pt-br’ TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, )
  • 25. Criando um Modelo Editando empresa/vagas/models.py from django.db import models # Criando uma classe para o “Local” class Local(models.Model): cidade = models.CharField(max_length=50) estado = models.CharField(max_length=50, null=True, blank=True) pais = models.CharField(max_length=50) …
  • 26. Criando um Modelo … # Definindo a função para o retorno def __unicode__(self): if self.estado: return “%s, %s, %s” % (self.cidade, self.estado, self.pais) else: return “%s, %s” % (self.cidade, self.pais)
  • 27. Criando um Modelo … # Criando a classe “Emprego” class Emprego(models.Model): publicado = models.DateField() titulo = models.CharField(max_length=50) descricao = models.TextField() local = models.ForeignKey(Local) …
  • 28. Criando um Modelo … # Definindo a função para retorno da classe def __unicode__(self): return “%s (%s)” % (self.titulo, self.local)
  • 29. Ativando o modelo(Aplicação) Editar settings.py INSTALLED_APPS INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘django.contrib.admin’, ‘django.contrib.admindocs’, ‘empresa.vagas’, )
  • 30. Visualizando o SQL python manage.py sql vagas
  • 31. Executando o SQL python manage.py syncdb
  • 32. Interface Admin cd vagas touch admin.py vim admin.py
  • 33. Interface Admin from empresa.vagas.models import Local from empresa.vagas.models import Emprego from django.contrib import admin Class LocalAdmin(admin.ModelAdmin): list_display = (“titulo”, “descricao”, “local”, “publicado”) ordering = [“-publicado”] search_fields = (“titulo”, “descricao”) list_filter = (“local”,) admin.site.register(Local, LocalAdmin) admin.site.register(Emprego, EmpregoAdmin)
  • 34. Interface Admin python manage.py runserver http://localhost:8000/admin/
  • 35. Design das URLs vim url.py from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns(‘empresa.vagas.views’, (r’^vagas/$’, ‘index’), (r’^vagas/(?P<object_id>d+)/$’, ‘detail’), (r’^admin/(.*)’, admin.site.root), )
  • 36. Editanto a view cd vagas from django.shortcuts import get_object_or_404, render_to_response from vagas.models import Emprego def index(request): lista = Emprego.objects.order_by(‘-publicado’)[:10] return render_to_response(‘vagas/index.html’, {‘lista’: lista}) …
  • 37. Editando a view … def detail(request, object_id): vaga = get_object_or_404(Emprego, pk=object_id) return render_to_response(‘vagas/detail.html’, {‘vaga’: vaga})
  • 38. Editar os templates Relembrando: (settings.py) TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, ) cd /home/diemesleno/livre/ mkdir templates cd templates
  • 39. Editar os templates vim base.html <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd> <html xmlns=http://www.w3c.org/1999/xhtml xml:lang=“en” lang=“en”> <head> <title> Super Empresa: {% block title %} Page {% endblock %} </title> {% block extrahead %} {% endblock %} </head> <body> {% block content %} {% endblock %} </body> </html>
  • 40. Editar os templates mkdir empresa cd empresa vim base.html
  • 41. Editar os templates {% extends “base.html” %} {% block extrahead %} <style> body { font-style: arial; color: navy; } h1 { text-align: center; } .job .title { font-size: 120px; font-weight: bold; } .job .posted { font-style: italic; } a.link { text-decoration: none; } a.visited { text-decoration:none; } a.hover { text-decoration: underline overline; background: #ffc; color: #FF0000; </style> {% endblock %}
  • 42. Editar os templates vim index.html {% extends “vagas/base.html” %} {% block title %} Lista de vagas {% endblock %} {% block content %} <h1>Lista de vagas</h1> <ul> {% for vaga in lista %} <li><a href=“{{ vaga.id }}”>{{ vaga.titulo }}</a></li> {% endfor %} </ul> {% endblock %}
  • 43. Editar os templates vim detail.html {% extends “vagas/base.html” %} {% block title %} Detalhes da vaga {% endblock %} {% block content %} <h1>Detalhes da vaga</h1> <div class=“job”> <div class=“title”> {{ vaga.titulo }} - {{ vaga.local }} </div> …
  • 44. Editar os templates … <div class=“posted”> Postado em: {{ vaga.publicado|date: “d-M-Y” }} </div> <div class=“description”> {{ vaga.descricao }} </div> </div> <p>&nbsp;</p> <a href=“/jobs/”>Voltar</a> {% endblock %}
  • 45. Conclusão • Escrito em Python. • Página de administração simples. • Design de URLs elegantes. • Modelos do DB. • Templates. • Desenvolvimento Web Rápido, fácil e poderoso com Django.
  • 46. Referências • http://djangoproject.com/documentation/ • http://code.djangoproject.com/ • http://groups.google.com/group/django-user • http://groups.google.com/group/django- developers
  • 49. Obrigado! Aplicações rápidas com Django Software Freedom Day – 20 de agosto de 2008 Campo Grande – Mato Grosso do Sul Contato: E-mail: diemesleno@gmail.com msn: d.lenon@gmail.com Skype: diemesleno