Anúncio
Anúncio

Mais conteúdo relacionado

Anúncio

Mais de Diemesleno Souza Carvalho(19)

Anúncio

Aplicacoes Rapidas Para Web Com Django

  1. Aplicações rápidas para Web com Diemesleno Souza Carvalho Software Freedom Day - Campo Grande – MS 20 de Setembro de 2008
  2. 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.
  3. 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.
  4. Apresentação MVC x MTV
  5. Apresentação Models Modelos de dados. class Exemplo(models.Model): pass
  6. Apresentação Templates {% tags %} {{ variáveis }}
  7. 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})
  8. Apresentação • Lawrence Journal-World (http://www.ljworld.com)
  9. Apresentação • Guitarrista Belga • Grande nome do Jazz • Django Reinhardt
  10. 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)
  11. Mercado de trabalho Há vagas!
  12. 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://www.python.org/community/jobs/ (221 Vagas)
  13. Mercado de trabalho
  14. Curiosidade… Do mesmo criador do digg
  15. Curiosidade… Leah Culver
  16. Curiosidade… Leah Culver
  17. Instalação • Python 2.3+ • Database: PostgreSQL, MySQL, SQLite3 • Django 1.0
  18. Instalando Django (1.0) • apt-get install python-django • http://www.djangoproject.com/download/ – tar xvzf Django-1.0.tar.gz – cd Django-1.0 – sudo python setup.py install
  19. Prática Desenvolvendo uma aplicação simples
  20. Prática Projeto (site) : empresa /admin/ Application : admin Application : admin Aplicação : admin /vagas/ Aplicação : vagas Database
  21. Prática django-admin.py startproject empresa empresa __init__.py pacote/* manage.py gerenciador/* settings.py configurações/* urls.py rotas/*
  22. Prática python manage.py startapp vagas cd vagas __init__.py app/pacote/* models.py app/models/* views.py app/views/*
  23. Prática cd empresa Editar settings.py ADMINS = ( (‘Diemesleno Souza Carvalho’, ‘diemesleno@gmail.com’), ) DATABASE_ENGINE = ‘mysql’ DATABASE_NAME = ‘empresa’ DATABASE_USER = ‘root’ DATABASE_PASSWORD = ‘123’ DATABASE_HOST = ‘localhost’
  24. Prática TIME_ZONE = ‘America/Campo Grande’ LANGUAGE_CODE = ‘pt-br’ TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, )
  25. 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) …
  26. 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)
  27. 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) …
  28. Criando um Modelo … # Definindo a função para retorno da classe def __unicode__(self): return “%s (%s)” % (self.titulo, self.local)
  29. Ativando o modelo(Aplicação) Editar settings.py INSTALLED_APPS INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘django.contrib.admin’, ‘django.contrib.admindocs’, ‘empresa.vagas’, )
  30. Visualizando o SQL python manage.py sql vagas
  31. Executando o SQL python manage.py syncdb
  32. Interface Admin cd vagas touch admin.py vim admin.py
  33. 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”) ordering = [“-publicado”] search_fields = (“titulo”, “descricao”) list_filter = (“local”,) admin.site.register(Local, LocalAdmin) admin.site.register(Emprego, EmpregoAdmin)
  34. Interface Admin python manage.py runserver http://localhost:8000/admin/
  35. 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), )
  36. 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}) …
  37. 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})
  38. Editar os templates Relembrando: (settings.py) TEMPLATE_DIRS = ( ‘/home/diemesleno/livre/templates/’, ) cd /home/diemesleno/livre/ mkdir templates cd templates
  39. 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>
  40. Editar os templates mkdir empresa cd empresa vim base.html
  41. Editar os templates {% extends “base.html” %} {% block extrahead %} <style> body { font-style: arial; color: navy; } 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 %}
  42. 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 %}
  43. 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> …
  44. Editar os templates … <div class=“posted”> Postado em: {{ vaga.publicado|date: “d-M-Y” }} </div> <div class=“description”> {{ vaga.descricao }} </div> </div> <p>&nbsp;</p> <a href=“/jobs/”>Voltar</a> {% endblock %}
  45. 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.
  46. Referências • http://djangoproject.com/documentation/ • http://code.djangoproject.com/ • http://groups.google.com/group/django-user • http://groups.google.com/group/django- developers
  47. Principal referência http://www.google.com.br
  48. Dúvidas ???
  49. 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
Anúncio