aplicacoes rapidas para web com django
Post on 14-May-2015
2.196 Views
Preview:
TRANSCRIPT
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.• 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.• 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
ViewsResponsá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.• Tradução para português quase completa.
• Excelentes livros já lançados. (inglês)
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://simonwillison.net/2008/Jan/18/django/ (74 Vagas)
• http://www.python.org/community/jobs/ (221 Vagas)
Instalando Django (1.0)
• apt-get install python-django
• http://www.djangoproject.com/download/• http://www.djangoproject.com/download/
– tar xvzf Django-1.0.tar.gz
– cd Django-1.0
– sudo python setup.py install
Projeto (site) : empresa
Application : adminApplication : admin
Aplicação : admin
/admin/
Prática
DatabaseAplicação : vagas
/vagas/
Prática
django-admin.py startproject empresa
empresa
__init__.py � pacote/*__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/*__init__.py � app/pacote/*
models.py � app/models/*
views.py � app/views/*
Prática
cd empresa
Editar � settings.py
ADMINS = (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/’,‘/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: 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):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)return “%s (%s)” % (self.titulo, self.local)
Ativando o modelo(Aplicação)
Editar � settings.py � INSTALLED_APPS
INSTALLED_APPS = (
‘django.contrib.auth’,‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.admin’,
‘django.contrib.admindocs’,
‘empresa.vagas’,
)
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”)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)
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}){‘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
{% extends “base.html” %}
{% block extrahead %}
<style>
body { font-style: arial; color: navy; }
h1 { text-align: center; }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”><div class=“description”>
{{ vaga.descricao }}
</div>
</div>
<p> </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.• 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-• http://groups.google.com/group/django-developers
top related