aplicações rápidas para a web com django

49
Aplicações rápidas para Web com Diemesleno Souza Carvalho Software Freedom Day - Campo Grande – MS 20 de Setembro de 2008

Upload: freedom-dayms

Post on 14-May-2015

2.948 views

Category:

Technology


0 download

DESCRIPTION

Aplicações rápidas para a Web com Django - Desenvolvendo e se divertindo(Diemesleno / DebianMS)

TRANSCRIPT

Page 1: Aplicações rápidas para a Web com Django

Aplicações rápidas para Web

com

Diemesleno Souza Carvalho

Software Freedom Day - Campo Grande – MS

20 de Setembro de 2008

Page 2: Aplicações rápidas para a Web com Django

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.

Page 3: Aplicações rápidas para a Web com Django

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.

Page 4: Aplicações rápidas para a Web com Django

Apresentação

MVC x MTV

Page 5: Aplicações rápidas para a Web com Django

Apresentação

Models

Modelos de dados.Modelos de dados.

class Exemplo(models.Model):

pass

Page 6: Aplicações rápidas para a Web com Django

Apresentação

Templates

{% tags %}{% tags %}

{{ variáveis }}

Page 7: Aplicações rápidas para a Web com Django

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

Page 8: Aplicações rápidas para a Web com Django

Apresentação

• Lawrence Journal-World (http://www.ljworld.com)

Page 9: Aplicações rápidas para a Web com Django

Apresentação

• Guitarrista Belga

• Grande nome do Jazz

• Django Reinhardt• Django Reinhardt

Page 10: Aplicações rápidas para a Web com Django

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)

Page 11: Aplicações rápidas para a Web com Django

Mercado de trabalho

Há vagas!Há vagas!

Page 12: Aplicações rápidas para a Web com Django

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)

Page 13: Aplicações rápidas para a Web com Django

Mercado de trabalho

Page 14: Aplicações rápidas para a Web com Django

Curiosidade…

Do mesmo criador do digg

Page 15: Aplicações rápidas para a Web com Django

Curiosidade…

Leah Culver

Page 16: Aplicações rápidas para a Web com Django

Curiosidade…

Leah Culver

Page 17: Aplicações rápidas para a Web com Django

Instalação

• Python 2.3+

• Database: PostgreSQL, MySQL, SQLite3

• Django 1.0

Page 18: Aplicações rápidas para a Web com Django

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

Page 19: Aplicações rápidas para a Web com Django

Prática

Desenvolvendo uma aplicação simples

Page 20: Aplicações rápidas para a Web com Django

Projeto (site) : empresa

Application : adminApplication : admin

Aplicação : admin

/admin/

Prática

DatabaseAplicação : vagas

/vagas/

Page 21: Aplicações rápidas para a Web com Django

Prática

django-admin.py startproject empresa

empresa

__init__.py � pacote/*__init__.py � pacote/*

manage.py � gerenciador/*

settings.py � configurações/*

urls.py � rotas/*

Page 22: Aplicações rápidas para a Web com Django

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/*

Page 23: Aplicações rápidas para a Web com Django

Prática

cd empresa

Editar � settings.py

ADMINS = (ADMINS = (

(‘Diemesleno Souza Carvalho’, ‘[email protected]’),

)

DATABASE_ENGINE = ‘mysql’

DATABASE_NAME = ‘empresa’

DATABASE_USER = ‘root’

DATABASE_PASSWORD = ‘123’

DATABASE_HOST = ‘localhost’

Page 24: Aplicações rápidas para a Web com Django

Prática

TIME_ZONE = ‘America/Campo Grande’

LANGUAGE_CODE = ‘pt-br’

TEMPLATE_DIRS = (

‘/home/diemesleno/livre/templates/’,‘/home/diemesleno/livre/templates/’,

)

Page 25: Aplicações rápidas para a Web com Django

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)

Page 26: Aplicações rápidas para a Web com Django

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)

Page 27: Aplicações rápidas para a Web com Django

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)

Page 28: Aplicações rápidas para a Web com Django

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)

Page 29: Aplicações rápidas para a Web com Django

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’,

)

Page 30: Aplicações rápidas para a Web com Django

Visualizando o SQL

python manage.py sql vagaspython manage.py sql vagas

Page 31: Aplicações rápidas para a Web com Django

Executando o SQL

python manage.py syncdbpython manage.py syncdb

Page 32: Aplicações rápidas para a Web com Django

Interface Admin

cd vagas

touch admin.pytouch admin.py

vim admin.py

Page 33: Aplicações rápidas para a Web com Django

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)

Page 34: Aplicações rápidas para a Web com Django

Interface Admin

python manage.py runserver

http://localhost:8000/admin/http://localhost:8000/admin/

Page 35: Aplicações rápidas para a Web com Django

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),

)

Page 36: Aplicações rápidas para a Web com Django

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

Page 37: Aplicações rápidas para a Web com Django

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

Page 38: Aplicações rápidas para a Web com Django

Editar os templates

Relembrando: (settings.py)

TEMPLATE_DIRS = (

‘/home/diemesleno/livre/templates/’,

)

cd /home/diemesleno/livre/

mkdir templates

cd templates

Page 39: Aplicações rápidas para a Web com Django

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>

Page 40: Aplicações rápidas para a Web com Django

Editar os templates

mkdir empresa

cd empresa

vim base.html vim base.html

Page 41: Aplicações rápidas para a Web com Django

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 %}

Page 42: Aplicações rápidas para a Web com Django

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 %}

Page 43: Aplicações rápidas para a Web com Django

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>

Page 44: Aplicações rápidas para a Web com Django

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>&nbsp;</p>

<a href=“/jobs/”>Voltar</a>

{% endblock %}

Page 45: Aplicações rápidas para a Web com Django

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.

Page 46: Aplicações rápidas para a Web 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

Page 47: Aplicações rápidas para a Web com Django

Principal referência

http://www.google.com.brhttp://www.google.com.br

Page 48: Aplicações rápidas para a Web com Django

Dúvidas

??????

Page 49: Aplicações rápidas para a Web 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: [email protected]

msn: [email protected]

Skype: diemesleno