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
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})
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)
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)
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
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>
…
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.
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