Apresenta algumas das principais características do Django. Mostra os conceitos por trás do framework e ilusta como o desenvolvedor consegue utilizar suas funcionalidades para produzir código mais rápido porém sem abrir mão da qualidade.
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
O frontend de aplicações web tem importância tão grande quanto o backend para o sucesso do projeto, veremos aqui algumas dicas básicas de otimização de frontend em aplicações django.
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
O frontend de aplicações web tem importância tão grande quanto o backend para o sucesso do projeto, veremos aqui algumas dicas básicas de otimização de frontend em aplicações django.
Desenvolver um projeto não se trata apenas de escrever código funcional. Legibilidade, modularização, acoplamento, portabilidade, complexidade e documentação são todas métricas importantíssimas para se produzir código de qualidade. Respondendo perguntas como:
Como organizar os arquivos no projeto?
Quais bibliotecas podem ajudar a tormar sua aplicação mais robusta e melhorar seu código?
Como organizar seu ambiente de desenvolvimento, staging e produção?
O que são boas e más práticas de desenvolvimento?
vamos debater como e quais ferramentas e padrões podem nos ajudar a desenvolver código de qualidade, sem que seja preciso muito esforço.
Domando a irreversibilidade com feature flagsHugo Bessa
Feature Flags é uma excelente ferramenta para ajudar desenvolvedores a cconstruir software com qualidade. A possibilidade de rapidamente desativar uma funcionalidade quebrada ou incompleta pode dar ao seu time mais precisão e paz de espírito. Nessa talk vou mostrar quais os benefícios e as preocupações que todos devem ter ao usá-las.Feature Flags é uma excelente ferramenta para ajudar desenvolvedores a cconstruir software com qualidade. A possibilidade de rapidamente desativar uma funcionalidade quebrada ou incompleta pode dar ao seu time mais precisão e paz de espírito. Nessa talk vou mostrar quais os benefícios e as preocupações que todos devem ter ao usá-las.
Palestra na semana global do empreendedorismo na Plug and work
https://eventioz.com.br/e/desenvolvendo-prototipos-de-startups-em-python
Esta palestra tem a proposta de apresentar a linguagem Python como solução para o desenvolvimento de protótipos e MVP para startups. Mostrar como empreendedores podem desenvolver seus próprios protótipos sem dependender da contratação de desenvolvedores profissionais e ter seu MVP funcionando em poucos dias com a ajuda de Python e seus web frameworks.
Não é fácil escrever uma biblioteca confortável de usar. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.
Ainda bem que muitos outros programadores já erraram antes de nós. E existem em Python e fora dele diversos exemplos de boas libs nas quais podemos nos inspirar.
Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:
- Alta Consistência
- Muitos dados puros
- Baixa Verbosidade
- Respeito ao Principle of Least Astonishment
- Alta Extensibilidade
- Baixa Retenção
- Vários níveis de abstrações
- Alta granularidade
- Interesses claros e separados
- Pythonica
Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.
Acostumado a sempre ouvir falar de: Zend FrameWork, Laravel, symfony e entre outros ? - Porém existem outras ferramentas que não precisam ser verdadeiros canhões e que seja possível organizar, trabalhar com reutilização de código e etc. Que tal utilizar então um : micro-framework para ajudar nessas rotinas mais comuns e imagine que esse micro-framework seja baseado no symfony ? Essa maravilha é o Silex que para quem está começando a se organizar e deseja entrar no mundo PHP profissional tais como, testes, API's, MVC, módulos próprios, services e entre outros irá ajudar a trilhar esse caminho sem muita dor de cabeça. A palestra visa mostrar os seguintes assuntos:
* O que é um micro-framework
* Por que devo utilizar ?
* Silex X Lumen !
* Instalando o Silex
* Serviços
* Rotas
* Twig - Utilização básica
* Doctrine - Utilização básica
* Monolog
Desenvolver um projeto não se trata apenas de escrever código funcional. Legibilidade, modularização, acoplamento, portabilidade, complexidade e documentação são todas métricas importantíssimas para se produzir código de qualidade. Respondendo perguntas como:
Como organizar os arquivos no projeto?
Quais bibliotecas podem ajudar a tormar sua aplicação mais robusta e melhorar seu código?
Como organizar seu ambiente de desenvolvimento, staging e produção?
O que são boas e más práticas de desenvolvimento?
vamos debater como e quais ferramentas e padrões podem nos ajudar a desenvolver código de qualidade, sem que seja preciso muito esforço.
Domando a irreversibilidade com feature flagsHugo Bessa
Feature Flags é uma excelente ferramenta para ajudar desenvolvedores a cconstruir software com qualidade. A possibilidade de rapidamente desativar uma funcionalidade quebrada ou incompleta pode dar ao seu time mais precisão e paz de espírito. Nessa talk vou mostrar quais os benefícios e as preocupações que todos devem ter ao usá-las.Feature Flags é uma excelente ferramenta para ajudar desenvolvedores a cconstruir software com qualidade. A possibilidade de rapidamente desativar uma funcionalidade quebrada ou incompleta pode dar ao seu time mais precisão e paz de espírito. Nessa talk vou mostrar quais os benefícios e as preocupações que todos devem ter ao usá-las.
Palestra na semana global do empreendedorismo na Plug and work
https://eventioz.com.br/e/desenvolvendo-prototipos-de-startups-em-python
Esta palestra tem a proposta de apresentar a linguagem Python como solução para o desenvolvimento de protótipos e MVP para startups. Mostrar como empreendedores podem desenvolver seus próprios protótipos sem dependender da contratação de desenvolvedores profissionais e ter seu MVP funcionando em poucos dias com a ajuda de Python e seus web frameworks.
Não é fácil escrever uma biblioteca confortável de usar. É difícil agradar a todos. Mas também é difícil agradar até quem acha que a nossa biblioteca faz algo útil. Não é fácil nem mesmo quando fazemos algo reusável só para nós mesmos.
Ainda bem que muitos outros programadores já erraram antes de nós. E existem em Python e fora dele diversos exemplos de boas libs nas quais podemos nos inspirar.
Essa palestra resumirá o que torna uma biblioteca boa, de acordo com nossa experiência e com a experiência de outros programadores que já escreveram sobre isso. Algumas características de boas bibliotecas são:
- Alta Consistência
- Muitos dados puros
- Baixa Verbosidade
- Respeito ao Principle of Least Astonishment
- Alta Extensibilidade
- Baixa Retenção
- Vários níveis de abstrações
- Alta granularidade
- Interesses claros e separados
- Pythonica
Como você pode ver, alguns aspectos acima são similares ao Zen of Python. Por isso também mostraremos funcionalidades do Python que ajudam a programar boas interfaces. Além disso, para resumir tudo definiremos um checklist que você poderá usar sempre que for escrever um módulo reusável. Esperamos que isso ajude você a programar melhor, o que certamente agradará seus parceiros de trabalho e a comunidade.
Acostumado a sempre ouvir falar de: Zend FrameWork, Laravel, symfony e entre outros ? - Porém existem outras ferramentas que não precisam ser verdadeiros canhões e que seja possível organizar, trabalhar com reutilização de código e etc. Que tal utilizar então um : micro-framework para ajudar nessas rotinas mais comuns e imagine que esse micro-framework seja baseado no symfony ? Essa maravilha é o Silex que para quem está começando a se organizar e deseja entrar no mundo PHP profissional tais como, testes, API's, MVC, módulos próprios, services e entre outros irá ajudar a trilhar esse caminho sem muita dor de cabeça. A palestra visa mostrar os seguintes assuntos:
* O que é um micro-framework
* Por que devo utilizar ?
* Silex X Lumen !
* Instalando o Silex
* Serviços
* Rotas
* Twig - Utilização básica
* Doctrine - Utilização básica
* Monolog
Apresentação realizada por mim para o Curso de Residência de Reuso da RISE em Recife 27.05.2011 sobre Django.
Apresentações sobre Pinax, Django-Piston e Django Registration
Os videos com o curso completo podem ser encontrados em: https://osantana.me/curso-de-python-e-django
Tudo sobre Python, Django, carreira e empreendedorismo na minha newsletter quinzenal "O Melhor da Internet". ASSINE:
https://osantana.me/o-melhor-da-internet-newsletter/
Apresentação sobre o Framework Django utilizada no I SET - Seminário Tecnológico, realizado no Colégio Agrícola Senador Carlos Gomes de Oliveira, em Araquari/SC
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
Esta palestra aborda como funciona o estilo arquitetural REST, entendendo os seus princípios e terminologias. Além disso, é feita uma comparação quanto a suas vantagens e desvantagens em relação a outras tecnologias, e para quais casos é indicado. A apresentação também inclui uma demonstração prática usando Django REST Framework.
Django é um framework para desenvolvimento rápido para web, escrito em Python.
Utiliza o padrão MTV (model - template - view).
Principais caracteristicas:
Mapeamento Objeto-Relacional (ORM)
Define a modelagem de dados através de classes em Python. Com isso é possível gerar suas tabelas no banco de dados e manipulá-las sem necessidade de utilizarSQL (o que também é possivel).
Interface Administrativa
No Django é possivel gerar automaticamente uma interface para administração para os modelos criados através do ORM.
Formulários
É possível gerar formulários automaticamente através dos modelos de dados.
URLs Elegantes
No Django não há limitações para criação de URLs elegantes e de maneira simples.
- Nada elegante, difícil para o usário e ruim para buscadores: www.meusite.com.br/index.jsp?id=12&nome=ciclano
- Elegante, fácil leitura e memorização e ótimo para buscadores:
www.meusite.com.br/12/ciclano
Sistema de Templates
O Django tem uma linguagem de templates poderosa, extensível e amigável. Com ela você pode separar design, conteúdo e código em Python.
Internacionalização
Django tem total suporte para aplicações multi-idioma, deixando você especificar strings de tradução e fornecendo ganchos para funcionalidades específicas do idioma.
Sistema de Cache
O Django possui um sistema de cache que se integra ao memcached ou em outros frameworks de cache.
Sobre Python
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL - Very High Level Language) com código fonte aberto.
Python é Interpretado ou compilado?
Python é executado de forma interpretada via bytecode, ou seja, escrevendo apenas uma vez o código Python podemos executá-lo em qualquer sistema operaciona
Apresentação da Palestra sobre o Framework Django, utilizado no desenvolvimento de sites e aplicações web. Na apresentação são mostrados os recursos do Django, citando seu ORM, acesso a bancos de dados, templates, cache, views, urls e diversos outros recursos.
A palestra tem como objetivo mostrar ferramentas do mercado atual, como editores, funções úteis, micro-frameworks e algumas boas práticas que agilizem o processo de codificação. Apresentada na PHP Conference de 2013 - Osasco SP.
Não se repita - Django Generic Views - Semana Acadêmica TADS 2015.Ramiro Luz
Palestra apresentada na Semana Acadêmica do curso de Tecnologia em Análise e Desenvolvimento de Sistemas da Universidade Federal do Paraná em Agosto de 2015.
[Roadsec23] Dominando Angular com o ChatGPTWender Machado
Nesta palestra feita no Roadsec23, exploraremos técnicas avançadas para trabalhar com o framework Angular, com a ajuda do ChatGPT. Desde estratégias de otimização de performance até soluções criativas para problemas comuns, você aprenderá como levar suas habilidades de desenvolvimento Angular para o próximo nível, aproveitando o conhecimento e a experiência do ChatGPT. Descubra como esta poderosa ferramenta de inteligência artificial pode ajudá-lo a aprimorar suas habilidades de programação Angular e impulsionar sua carreira de desenvolvedor.
Java.ino - Plataforma de Programação para Arduino com JavaNewton Gomes
Programação Orientada a Objetos para Arduino usando Java. Proposta de plataforma de software destinada a aplicação da linguagem Java para programação de projetos na plataforma Arduino.
Contato: newtongomes.net@gmail.com
(Contribuição, Dúvidas, Participação no Projeto)
Desenvolvimento rápido de aplicações Web com Python e DjangoHerberth Amaral
Palestra de nível básico ministrada no dia 29/09/2011 na Semana de Sistemas de Informação da Universidade Federal do Vale do Jequitinhonha e Mucuri (UFVJM)
Palestra sobre Javascript que ministrei na III Mostra Científica do Senac-RS.
A palestra conta um pouco da história do Javascript e o porque da imcompreensão da linguagem. Também mostra o que é possível fazer e como desenvolver um código um profissional e levado a sério com Javascript.
Semelhante a Django para desenvolvimento web; porque ser repetitivo é chato. (20)
Django para desenvolvimento web; porque ser repetitivo é chato.
1. Django para desenvolvimento web
Porque ser repetitivo ´ chato.
e
Arthur Furlan (afurlan)
afurlan@afurlan.org
11 de Maio de 2010
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
2. ”Django focuses on automating as much as
possible and adhering to the DRY principle.”
Django Project - http://djangoproject.com
3. Mais sobre o Django
Framework web voltado ao desenvolvimento ´gil
a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
4. Mais sobre o Django
Framework web voltado ao desenvolvimento ´gil
a
Torna f´cil e r´pido tarefas simples do desenvolvimento web
a a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
5. Mais sobre o Django
Framework web voltado ao desenvolvimento ´gil
a
Torna f´cil e r´pido tarefas simples do desenvolvimento web
a a
Escrito com a linguagem de programa¸˜o Python
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
6. Mais sobre o Django
Framework web voltado ao desenvolvimento ´gil
a
Torna f´cil e r´pido tarefas simples do desenvolvimento web
a a
Escrito com a linguagem de programa¸˜o Python
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
7. Mais sobre o Django
Framework web voltado ao desenvolvimento ´gil
a
Torna f´cil e r´pido tarefas simples do desenvolvimento web
a a
Escrito com a linguagem de programa¸˜o Python
ca
Django Reinhardt
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
8. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
9. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
10. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
11. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
12. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Sistema de templates
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
13. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Sistema de templates
Mapeamento flex´ de URLs
ıvel
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
14. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Sistema de templates
Mapeamento flex´ de URLs
ıvel
Sistema de cache
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
15. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Sistema de templates
Mapeamento flex´ de URLs
ıvel
Sistema de cache
Internacionaliza¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
16. Principais caracter´
ısticas
Desenvolvimento em Camadas (MVC)
Mapeamento Objeto Relacional (ORM)
Desenvolvimento dirigido a testes (TDD)
Interface administrativa
Sistema de templates
Mapeamento flex´ de URLs
ıvel
Sistema de cache
Internacionaliza¸˜o
ca
Reusabilidade (DRY)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
17. O padr˜o MVC no Django
a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
18. O padr˜o MVC no Django
a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
19. O padr˜o MVC no Django
a
MVC X MTV
Model (Model)
Template (View)
View (Controller)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
20. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
21. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Um projeto pode conter v´rias aplica¸˜es
a co
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
22. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Um projeto pode conter v´rias aplica¸˜es
a co
Uma aplica¸˜o pode fazer parte de v´rios projetos
ca a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
23. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Um projeto pode conter v´rias aplica¸˜es
a co
Uma aplica¸˜o pode fazer parte de v´rios projetos
ca a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
24. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Um projeto pode conter v´rias aplica¸˜es
a co
Uma aplica¸˜o pode fazer parte de v´rios projetos
ca a
O que ´ um projeto Django?
e
Uma instˆncia de Django: configura¸˜es, aplica¸˜es, etc.
a co co
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
25. Projetos e aplica¸oes
c˜
Sistemas em Django s˜o divididos em projetos e aplica¸˜es
a co
Um projeto pode conter v´rias aplica¸˜es
a co
Uma aplica¸˜o pode fazer parte de v´rios projetos
ca a
O que ´ um projeto Django?
e
Uma instˆncia de Django: configura¸˜es, aplica¸˜es, etc.
a co co
O que ´ uma aplica¸˜o Django?
e ca
Qualquer trecho de c´digo que possa ser reutilizado
o
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
26. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
27. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
28. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
Vocˆ define suas regras de neg´cio no modelo
e o
29. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
Vocˆ define suas regras de neg´cio no modelo
e o
Camadas superiores herdam essas informa¸˜es
co
30. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
Vocˆ define suas regras de neg´cio no modelo
e o
Camadas superiores herdam essas informa¸˜es
co
Atributos
31. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
Vocˆ define suas regras de neg´cio no modelo
e o
Camadas superiores herdam essas informa¸˜es
co
Atributos
Informa¸˜es
co
32. Ent˜o o Django me ajuda a ser menos repetitivo... Ok, como?
a
O Django ´ um framework database-driven
e
Vocˆ define suas regras de neg´cio no modelo
e o
Camadas superiores herdam essas informa¸˜es
co
Atributos
Informa¸˜es
co
Valida¸˜es
co
34. Criando um novo projeto
Um Cat´logo de Contatos:
a
$ django-admin startproject catalogo
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
35. Criando um novo projeto
Um Cat´logo de Contatos:
a
$ django-admin startproject catalogo
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
36. Come¸ando pelo come¸o...
c c
Configurando e criando o banco de dados:
$ vim settings.py
...
DATABASE_ENGINE = ’ p o s tg r e sq l _ ps y c op g 2 ’
DATABASE_NAME = ’ catalogo ’
DATABASE_USER = ’ catalogo ’
DATABASE_PASSWOR D = ’ ****** ’
DATABASE_HOST = ’ ’
DATABASE_PORT = ’ ’
...
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
37. Come¸ando pelo come¸o...
c c
Configurando e criando o banco de dados:
$ vim settings.py
...
DATABASE_ENGINE = ’ p o s tg r e sq l _ ps y c op g 2 ’
DATABASE_NAME = ’ catalogo ’
DATABASE_USER = ’ catalogo ’
DATABASE_PASSWOR D = ’ ****** ’
DATABASE_HOST = ’ ’
DATABASE_PORT = ’ ’
...
$ ./manage.py syncdb
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
38. Digam ”Ol´” para o Django!
a
Acessando o sistema:
$ ./manage.py runserver
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
39. Digam ”Ol´” para o Django!
a
Acessando o sistema:
$ ./manage.py runserver
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
40. Criando uma aplica¸˜o
ca
Nossa primeira (e, nesta apresenta¸˜o, unica)
ca ´ aplica¸˜o:
ca
$ django-admin startapp contatos
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
41. Criando uma aplica¸˜o
ca
Nossa primeira (e, nesta apresenta¸˜o, unica)
ca ´ aplica¸˜o:
ca
$ django-admin startapp contatos
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
42. Criando um novo modelo
Criando o primeiro modelo da aplica¸˜o
ca
1 from django . db import models
2 from django . core . urlresolvers import reverse
3
4 class Pessoa ( models . Model ):
5 name = models . CharField ( max_length =60)
6 email = models . EmailField ( unique = True )
7
8 def __unicode__ ( self ):
9 return ’ "% s " <%s > ’ % ( self . name , self . email )
10
11 def get_absolute_url ( self ):
12 return reverse ( ’ pessoa - view ’ , args =[ self . id ])
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
43. Criando um novo modelo
Criando o primeiro modelo da aplica¸˜o
ca
1 from django . db import models
2 from django . core . urlresolvers import reverse
3
4 class Pessoa ( models . Model ):
5 name = models . CharField ( max_length =60)
6 email = models . EmailField ( unique = True )
7
8 def __unicode__ ( self ):
9 return ’ "% s " <%s > ’ % ( self . name , self . email )
10
11 def get_absolute_url ( self ):
12 return reverse ( ’ pessoa - view ’ , args =[ self . id ])
Criando o formul´rio para o modelo Pessoa
a
1 from django . forms import ModelForm
2 from catalogo . apps . contatos . models import Pessoa
3
4 class PessoaForm ( ModelForm ):
5 class Meta :
6 model = Pessoa
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
44. Criando a primeira view
Listagem dos objetos
from django . shortcuts import re n de r_ t o_ r es po n se
from django . template import RequestContext
from catalogo . apps . contatos . models import Pessoa
def pessoa_list ( request ):
# obtem a lista de pessoas
object_list = Pessoa . objects . all ()
# envia os dados para o template
return r e nd e r_ to _ re s po ns e ( ’ pessoa_list . html ’ , locals () ,
context_instance = RequestContext ( request ))
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
45. Criando a primeira view
Listagem dos objetos
from django . shortcuts import re n de r_ t o_ r es po n se
from django . template import RequestContext
from catalogo . apps . contatos . models import Pessoa
def pessoa_list ( request ):
# obtem a lista de pessoas
object_list = Pessoa . objects . all ()
# envia os dados para o template
return r e nd e r_ to _ re s po ns e ( ’ pessoa_list . html ’ , locals () ,
context_instance = RequestContext ( request ))
Template
{% extends " base . html " %}
{% block title %} Pessoas {% endblock %}
{% block body %}
<a href = " {% url pessoa - insert %} " > Inserir </ a > < br / >
< br / >
{% for object in object_list %}
<a href = " {{ object . get_absolute_url }} " > {{ object }} </ a >
( <a href = " {% url pessoa - update object . id %} " > Editar </ a >
| <a href = " {% url pessoa - delete object . id %} " > Apagar </ a >) < br / >
{% endfor %}
{% endblock %}
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
46. Criando a segunda view
Exibi¸˜o dos objetos
ca
from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04
from django . template import RequestContext
from catalogo . apps . contatos . models import Pessoa
def pessoa_view ( request , object_id ):
# obtem a pessoa a ser exibida
object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id )
# envia os dados para o template
return r e nd e r_ to _ re s po ns e ( ’ pessoa_view . html ’ , locals () ,
context_instance = RequestContext ( request ))
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
47. Criando a segunda view
Exibi¸˜o dos objetos
ca
from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04
from django . template import RequestContext
from catalogo . apps . contatos . models import Pessoa
def pessoa_view ( request , object_id ):
# obtem a pessoa a ser exibida
object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id )
# envia os dados para o template
return r e nd e r_ to _ re s po ns e ( ’ pessoa_view . html ’ , locals () ,
context_instance = RequestContext ( request ))
Template
{% extends " base . html " %}
{% block title %} Exibir pessoa {% endblock %}
{% block body %}
<b > Nome : </ b > {{ object . name }} < br / >
<b > Email : </ b > {{ object . email }} < br / >
< br / >
<a href = " {% url pessoa - list %} " > Voltar </ a >
{% endblock %}
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
48. Criando a terceira view
Removendo objetos
from django . shortcuts import g et_ obj ect _or_ 404
from django . http import H t t p R e s p o n s e R e d i r e c t
from catalogo . apps . contatos . models import Pessoa
def pessoa_delete ( request , object_id ):
# obtem a pessoa a ser apagadao
object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id )
object . delete ()
# redireciona para a listagem de objetos
return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ ))
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
49. Criando a terceira view
Removendo objetos
from django . shortcuts import g et_ obj ect _or_ 404
from django . http import H t t p R e s p o n s e R e d i r e c t
from catalogo . apps . contatos . models import Pessoa
def pessoa_delete ( request , object_id ):
# obtem a pessoa a ser apagadao
object = get _ob jec t_o r_4 04 ( Pessoa , id = object_id )
object . delete ()
# redireciona para a listagem de objetos
return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ ))
Template: n˜o tem
a
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
50. Criando a ultima view
´
Edi¸˜o de objetos
ca
from django . core . urlresolvers import reverse
from django . shortcuts import render_to_response , ge t_o bjec t_o r_4 04
from django . template import RequestContext
from django . http import H t t p R e s p o n s e R e d i r e c t
from catalogo . apps . contatos . models import Pessoa
from catalogo . apps . contatos . forms import PessoaForm
def pessoa_form ( request , object_id = None ):
# carrega o objeto ( se houver ) e inicializa o formulario
instance = ge t_ob jec t_o r_4 04 ( Pessoa , id = object_id ) if object_id else None
form = PessoaForm ( instance = instance )
# valida e altera o objeto ( caso a validacao esteja OK )
if request . method == ’ POST ’:
form = PessoaForm ( request . POST , instance = instance )
if form . is_valid ():
form . save ()
return H t t p R e s p o n s e R e d i r e c t ( reverse ( ’ pessoa - list ’ ))
# envia novamente para o formulario
return r e nd e r_ to _ re s po ns e ( ’ pessoa_form . html ’ , locals () ,
context_instance = RequestContext ( request ))
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
51. Criando a ultima view
´
Template
{% extends " base . html " %}
{% block title %}
{% if form . instance . id %} Editar {% else %} Inserir {% endif %} pessoa
{% endblock %}
{% block body %}
< form method = " post " action = " . " >
{{ form . as_p }}
< input type = " submit " value = " Enviar " / >
</ form >
{% endblock %}
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
52. Mapeando URLs para as views
URLs do projeto
1 from django . conf . urls . defaults import *
2
3 urlpatterns = patterns ( ’ ’ ,
4 url ( ’^ pessoa / ’ , include ( ’ catalogo . apps . contatos . urls ’)) ,
5 )
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
53. Mapeando URLs para as views
URLs do projeto
1 from django . conf . urls . defaults import *
2
3 urlpatterns = patterns ( ’ ’ ,
4 url ( ’^ pessoa / ’ , include ( ’ catalogo . apps . contatos . urls ’)) ,
5 )
URLs da aplica¸˜o
ca
1 from django . conf . urls . defaults import *
2
3 urlpatterns = patterns ( ’ catalogo . apps . contatos ’ ,
4 url ( ’^ $ ’ , ’ views . pessoa_list ’ , name = ’ pessoa - list ’) ,
5 url ( ’^ form / $ ’ , ’ views . pessoa_form ’ , name = ’ pessoa - insert ’) ,
6 url ( ’^ form /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_form ’ ,
7 name = ’ pessoa - update ’) ,
8 url ( ’^ view /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_view ’ ,
9 name = ’ pessoa - view ’) ,
10 url ( ’^ delete /(? P < object_id > d +)/ $ ’ , ’ views . pessoa_delete ’ ,
11 name = ’ pessoa - delete ’) ,
12 )
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
54. Reaproveitando mais, escrevendo menos...
Se eu quiser criar outro modelo, qual a diferen¸a?
c
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
55. Reaproveitando mais, escrevendo menos...
Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
c
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
56. Reaproveitando mais, escrevendo menos...
Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
c
Por que n˜o criar algo gen´rico?
a e
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
57. Reaproveitando mais, escrevendo menos...
Se eu quiser criar outro modelo, qual a diferen¸a? O modelo
c
Por que n˜o criar algo gen´rico?
a e
Generic Views!
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
58. Mapeando URLs para as views... com Generic Views
Mapeamento de URLs utilizando Generic Views
from django . conf . urls . defaults import *
from django . views . generic import create_update , list_detail
from models import Pessoa
list _dict_info = { ’ queryset ’: Pessoa . objects . all () , ’ template_name ’: ’ pessoa_list . html ’ }
view _dict_info = { ’ queryset ’: Pessoa . objects . all () , ’ template_name ’: ’ pessoa_view . html ’ }
i n s e r t _ d i ct_info = {
’ model ’: Pessoa , ’ po s t_ sa v e_ r ed ir e ct ’: ’/ pessoa / ’ ,
’ template_name ’: ’ pessoa_form . html ’ ,
}
d e l e t e _ d i ct_info = { ’ model ’: Pessoa , ’ p o s t _ d e l e t e _ r e d i r e c t ’: ’/ pessoa / ’ }
u p d a t e _ d i ct_info = insert_dict_info
urlpatterns = patterns ( ’ ’ ,
url ( ’^ $ ’ , list_detail . object_list , list_dict_info , name = ’ pessoa - list ’) ,
url ( ’^ form / $ ’ , create_update . create_object ,
insert_dict_info , name = ’ pessoa - insert ’) ,
url ( ’^ form /(? P < object_id > d +)/ $ ’ , create_update . update_object ,
update_dict_info , name = ’ pessoa - update ’) ,
url ( ’^ view /(? P < object_id > d +)/ $ ’ , list_detail . object_detail ,
view_dict_info , name = ’ pessoa - view ’) ,
url ( ’^ delete /(? P < object_id > d +)/ $ ’ , create_update . delete_object ,
delete_dict_info , name = ’ pessoa - delete ’) ,
)
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
59. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
60. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
61. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
62. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
63. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
64. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
65. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
66. Telas da aplica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
67. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
68. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
69. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜o
ca
Flatpages
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
70. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜o
ca
Flatpages
Sitemaps
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
71. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜o
ca
Flatpages
Sitemaps
Feeds
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
72. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
73. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Cache
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
74. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Cache
...
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
75. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Cache
...
Reposit´rios de aplica¸˜es
o co
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
76. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Cache
...
Reposit´rios de aplica¸˜es
o co
http://djangoapps.org
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
77. Isso ´ s´ a ponta do iceberg...
e o
O Django tem muitas outras coisas interessantes:
Administra¸˜oca
Flatpages
Sitemaps
Feeds
Autentica¸˜o
ca
Cache
...
Reposit´rios de aplica¸˜es
o co
http://djangoapps.org
http://pinaxproject.com
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web
78. Fim
Obrigado! D´vidas?
u
http://www.slideshare.net/afurlan/django-para-desenvolvimento-web-porque-ser-repetitivo-chato
http://tinyurl.com/afurlan-django
Arthur Furlan (afurlan)
afurlan@afurlan.org
http://blog.afurlan.org
twitter: @arthurfurlan
Arthur Furlan (afurlan) afurlan@afurlan.org Django para desenvolvimento web