Aplicações rápidas para Web
                com



        Diemesleno Souza Carvalho
Software Freedom Day - Campo Grande –...
Tópicos abordados

•   Apresentação do framework.
•   A documentação é importante?
•   Mercado de trabalho.
•   Instalação...
Apresentação

•   Framework Web de alto nível.
•   Desenvolvimento rápido.
•   Automatiza coisas repetitivas.
•   Segue bo...
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):
        lis...
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 qua...
Mercado de trabalho




Há vagas!
Mercado de trabalho


•   http://www.pythonbrasil.com.br/moin.cgi/OportunidadesDeEmprego (42 Vagas)
•   http://djangogigs....
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...
Prática


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


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

empresa
  __init__.py       pacote/*
  manage.py        gerenciador/*
  sett...
Prática
python manage.py startapp vagas

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

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

DATABASE_EN...
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 ...
Criando um Modelo
…
# Definindo a função para o retorno


   def __unicode__(self):
        if self.estado:
              ...
Criando um Modelo
…
# Criando a classe “Emprego”



class Emprego(models.Model):
        publicado = models.DateField()
  ...
Criando um Modelo
…
# Definindo a função para retorno da classe

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

    INSTALLED_APPS = (
          ‘...
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...
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()...
Editanto a view
cd vagas
from django.shortcuts import get_object_or_404, render_to_response
from vagas.models import Empre...
Editando a view
…

def detail(request, object_id):
   vaga = get_object_or_404(Emprego, pk=object_id)
   return render_to_...
Editar os templates
Relembrando: (settings.py)

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

cd /home/dieme...
Editar os templates
vim base.html

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
        http://www.w3c.o...
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...
Editar os templates
vim index.html

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

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

{% b...
Editar os templates
vim detail.html

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

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

{...
Editar os templates
…

                  <div class=“posted”>
                           Postado em: {{ vaga.publicado|dat...
Conclusão
•   Escrito em Python.
•   Página de administração simples.
•   Design de URLs elegantes.
•   Modelos do DB.
•  ...
Referências
• http://djangoproject.com/documentation/
• http://code.djangoproject.com/
• http://groups.google.com/group/dj...
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



C...
Próximos SlideShares
Carregando em…5
×

Aplicacoes Rapidas Para Web Com Django

2.376 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.376
No SlideShare
0
A partir de incorporações
0
Número de incorporações
421
Ações
Compartilhamentos
0
Downloads
60
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aplicacoes Rapidas Para Web Com Django

  1. 1. Aplicações rápidas para Web com Diemesleno Souza Carvalho Software Freedom Day - Campo Grande – MS 20 de Setembro de 2008
  2. 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. 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.
  4. 4. Apresentação MVC x MTV
  5. 5. Apresentação Models Modelos de dados. class Exemplo(models.Model): pass
  6. 6. Apresentação Templates {% tags %} {{ variáveis }}
  7. 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. 8. Apresentação • Lawrence Journal-World (http://www.ljworld.com)
  9. 9. Apresentação • Guitarrista Belga • Grande nome do Jazz • Django Reinhardt
  10. 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)
  11. 11. Mercado de trabalho Há vagas!
  12. 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)
  13. 13. Mercado de trabalho
  14. 14. Curiosidade… Do mesmo criador do digg
  15. 15. Curiosidade… Leah Culver
  16. 16. Curiosidade… Leah Culver
  17. 17. Instalação • Python 2.3+ • Database: PostgreSQL, MySQL, SQLite3 • Django 1.0
  18. 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
  19. 19. Prática Desenvolvendo uma aplicação simples
  20. 20. Prática Projeto (site) : empresa /admin/ Application : admin Application : admin Aplicação : admin /vagas/ Aplicação : vagas Database
  21. 21. Prática django-admin.py startproject empresa empresa __init__.py pacote/* manage.py gerenciador/* settings.py configurações/* urls.py rotas/*
  22. 22. Prática python manage.py startapp vagas cd vagas __init__.py app/pacote/* models.py app/models/* views.py app/views/*
  23. 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. 24. Prática TIME_ZONE = ‘America/Campo Grande’ LANGUAGE_CODE = ‘pt-br’ TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, )
  25. 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. 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. 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. 28. Criando um Modelo … # Definindo a função para retorno da classe def __unicode__(self): return “%s (%s)” % (self.titulo, self.local)
  29. 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. 30. Visualizando o SQL python manage.py sql vagas
  31. 31. Executando o SQL python manage.py syncdb
  32. 32. Interface Admin cd vagas touch admin.py vim admin.py
  33. 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. 34. Interface Admin python manage.py runserver http://localhost:8000/admin/
  35. 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. 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. 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. 38. Editar os templates Relembrando: (settings.py) TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, ) cd /home/diemesleno/livre/ mkdir templates cd templates
  39. 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. 40. Editar os templates mkdir empresa cd empresa vim base.html
  41. 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. 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. 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. 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. 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. 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
  47. 47. Principal referência http://www.google.com.br
  48. 48. Dúvidas ???
  49. 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

×