aplicações rápidas para a web com django
Post on 14-May-2015
2.948 Views
Preview:
DESCRIPTION
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
MVC x MTV
Apresentação
Models
Modelos de dados.Modelos de dados.
class Exemplo(models.Model):
pass
Apresentação
Templates
{% tags %}{% tags %}
{{ variáveis }}
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})
Apresentação
• Lawrence Journal-World (http://www.ljworld.com)
Apresentação
• Guitarrista Belga
• Grande nome do Jazz
• Django Reinhardt• Django Reinhardt
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
Há vagas!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://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/• 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
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’,
)
Visualizando o SQL
python manage.py sql vagaspython manage.py sql vagas
Executando o SQL
python manage.py syncdbpython manage.py syncdb
Interface Admin
cd vagas
touch admin.pytouch 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”)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/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}){‘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 vim base.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
Principal referência
http://www.google.com.brhttp://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
top related