aplicações rápidas para a web com django
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/4.jpg)
Apresentação
MVC x MTV
![Page 5: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/6.jpg)
Apresentação
Templates
{% tags %}{% tags %}
{{ variáveis }}
![Page 7: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/8.jpg)
Apresentação
• Lawrence Journal-World (http://www.ljworld.com)
![Page 9: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/9.jpg)
Apresentação
• Guitarrista Belga
• Grande nome do Jazz
• Django Reinhardt• Django Reinhardt
![Page 10: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/11.jpg)
Mercado de trabalho
Há vagas!Há vagas!
![Page 12: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/13.jpg)
Mercado de trabalho
![Page 14: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/14.jpg)
Curiosidade…
Do mesmo criador do digg
![Page 15: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/15.jpg)
Curiosidade…
Leah Culver
![Page 16: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/16.jpg)
Curiosidade…
Leah Culver
![Page 17: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/17.jpg)
Instalação
• Python 2.3+
• Database: PostgreSQL, MySQL, SQLite3
• Django 1.0
![Page 18: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/19.jpg)
Prática
Desenvolvendo uma aplicação simples
![Page 20: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/30.jpg)
Visualizando o SQL
python manage.py sql vagaspython manage.py sql vagas
![Page 31: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/31.jpg)
Executando o SQL
python manage.py syncdbpython manage.py syncdb
![Page 32: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/32.jpg)
Interface Admin
cd vagas
touch admin.pytouch admin.py
vim admin.py
![Page 33: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/38.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/40.jpg)
Editar os templates
mkdir empresa
cd empresa
vim base.html vim base.html
![Page 41: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/44.jpg)
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 %}
![Page 45: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/45.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/46.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/47.jpg)
Principal referência
http://www.google.com.brhttp://www.google.com.br
![Page 48: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/48.jpg)
Dúvidas
??????
![Page 49: Aplicações rápidas para a Web com Django](https://reader034.vdocuments.site/reader034/viewer/2022050921/5554ac25b4c905fd608b525d/html5/thumbnails/49.jpg)
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