SlideShare uma empresa Scribd logo
1 de 44
Django
The web framework for perfectionists with deadlines.
O framework web para perfeccionistas com prazos.
fb.com/joffilyf

github.com/joffilyfe

Contatos
Django Framework
• É um conjunto de ferramentas prontas para uso
• É possível criar os mais variados tipos de
aplicações
• É escrito em Python
• É modular
• É fácil
Como funciona?
Resumidamente é isso
Cliente
Servidor
Requisição
Resolução da URL View (controller)
Resposta
Model
Template
Formulários
Local de trabalho
• No windows vamos utilizar uma pasta chamada
curso localizada em C:, por favor criem.
• C:curso

E vamos navegar até lá via prompt de comando

cd C:curso
• No linux/mac vamos criar uma pasta na raiz do
nosso usuário chamada curso

mkdir ~/curso

cd ~/curso
Terminologia
$ no início da linha significa um comando no terminal/CMD
>>> no início da linha significa o resultado de alguma interação

no interpretador python
Ambiente virtual
• É aconselhável utilizar um “Ambiente virtual” para instalar nossos
projetos. É prático no isolamento de dependências.
• $ python -m venv ambiente
• No linux ou Mac

$ source ambiente/bin/activate
• No windows

C:curso> ambienteScriptsactivate
• Quando ativamos, nosso terminal de comandos vai ficar parecido
com isso

(ambiente) C:curso> 

(ambiente) ~/pasta$
Gerenciando dependências
• O PIP é um gerenciador de pacotes Python que
utilizamos para instalar novos pacotes e gerenciar
as nossas dependências.
• (ambiente) ~/curso$ pip install django
Python Blog
• Nós vamos criar um blog (falem agora ou calem-se
para sempre).
• Postar novas histórias.
• Deletar posts antigos.
• Listar as histórias na página inicial.
Iniciando um Projeto Django
• No windows digite

(ambiente) C:curso> python ambienteScripts
django-admin.py startproject meusite .
• No linux digite

(ambiente) ~/curso$ django-admin startproject
meusite .
O resultado
• O django-admin criou uma pasta chamada meusite e
dentro dela foram postos alguns arquivos.
• Nossa estrutura é a seguinte:

.meusite

── manage.py

└── meusite

── __init__.py

── settings.py

── urls.py

└── wsgi.py
Vamos dar uma olhada de
perto em alguns arquivos
• Dentro da segunda pasta meusite nós temos dois
arquivos muito importantes, o settings.py e
urls.py.
• O settings.py guarda toda a configuração do
nosso projeto, STATIC_URL = '/static/'
• O arquivo urls.py é responsável por guardar as
‘rotas' disponíveis em nossa aplicação.
Entendendo a analogia do
Django
• Dentro do nosso grande projeto ‘meusite' podem existir
vários APPS.
• app: Blog

app: Site

app: PyGram (instagram de python, oi?)
• É um pouco confuso inicialmente mas faz todo o sentido
dividir as responsabilidades em apps diferentes. Esses
Apps podem ou não ter algum tipo de comunicação.
• Uma boa regra para saber se algo é um app ou não é
perguntar-se “isso vai ser muito complexo?”.
Nosso APP Blog
• Vamos entrar na pasta recém criada (meusite)
• (ambiente) $ cd ~/curso/meusite

(ambiente) $ cd C:cursomeusite
• Agora criamos o nosso app

(ambiente) $ python manage.py startapp blog
Nosso APP Blog
• Note que uma pasta chamada blog foi criada e dentro dela nós temos
vários outros arquivos.



.meusite

── blog

│   ── __init__.py

│   ── admin.py

│   ── apps.py

│   ── migrations

│   │   └── __init__.py

│   ── models.py

│   ── tests.py

│   └── views.py

── …….
Testando se nosso projeto
funciona
• No prompt / terminal digite

(ambiente) $ python manage.py runserver
• python manage.py runserver

Performing system checks...



February 12, 2016 - 13:10:54

Django version 1.9.2, using settings 'meusite.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.
• Acessem o endereço http://127.0.0.1:800/ no navegador.
Veremos algo assim
Views
Definimos a lógica do nosso blog
No arquivo
views.py
urls.py
Caminhos (rotas) que podem ser acessadas pelos
usuários ou maquinas
Arquivo urls.py
No nosso APP de blog não há um arquivo urls.py então
vamos cria-lo com o seguinte código
Modelos para bancos
de dados
models.py
Models.py
• Precisamos conhecer um pouquinho sobre um conceito
muito utilizado em linguagens de programação, a
Programação Orientação a Objetos (POO).
• É uma maneira de organizarmos propriedades e
funções (métodos).
• Um gato pode ser considerado um objeto.

Porque um gato possui a cor dos seus olhos, a cor do
seu pelo e as ações como ‘arranhar’, ‘comer' e
‘DORMIR' (eles so dormem~)
Models.py
• No nosso caso nós queremos modelar coisas que
existem em nosso blog, que é o caso das
postagens. Um post tem..
• Título

Texto

Autor

Data de publicação
Traduzimos isso para
Trabalhando com versões
do nosso Post
• No django nós temos o conceito de migrações, guardem esse
nome porque ele salva vidas!
• A migração é uma ferramenta que cria versões dos nosso modelos
para banco de dados, sempre que alteramos o nosso models.py,
devemos rodar o comando
• (ambiente) ~/meusite $ python manage.py makemigrations
• Teremos a seguinte resposta

0001_initial.py:

- Create model Post
• Por sequência usamos o comando

(ambiente) ~/meusite $ python manage.py migrate
O que fizemos até agora?
• Criamos uma view chamada index, que mostra
algumas informações.
• Criamos uma rota para acessar a view index.
• Criamos um modelo para os nossos Posts.
• ‘Migramos' o nosso banco de dados para versão
mais atual (incluímos o Post).
Django Admin
Parece que o jogo virou não é mesmo?
Django Admin
• O Django já vem com uma ferramenta de
administração para os seus modelos para banco
de dados.
• É possível fazer muita coisa com o Django admin e
isso nos economiza muito tempo mesmo!
Admin.py
Django Admin
• Para que possamos acessar o Admin do nosso site
é preciso criar um Super Usuário. Vamos para linha
de comando.
• (ambiente) ~/meusite$ python manage.py
createsuperuser
Django Admin
• Acessando o endereço http://127.0.0.1:8000/admin
Views do nosso Blog
• Notamos que podemos inserir novos posts pelo
admin do django, também podemos atualiza-los e
remove-los.
• Esse cenário nem sempre é satisfatório, muitas
vezes não queremos que alguém acesse uma área
administrativa para atualizar/deletar/criar algo.
• Vamos então aprimorar a lógica do nosso blog
para conseguirmos inserir Posts sem um painel
administrativo.
Templates html
• Vamos criar uma pasta chamada templates dentro do nosso app blog
e um arquivo chamado index.html. E Teremos uma estrutura assim.
• .blog

── __init__.py

── admin.py

── apps.py

── forms.py

── migrations

│   ── 0001_initial.py

│   ── __init__.py

── models.py

── templates

│   ── index.html
• Para mostrar o nosso recém criado arquivo html,
vamos modificar um pouquinho o nosso view.py,
observe.
Views e Templates
Mostrando os Últimos Posts
Formulários
• Uma das coisas mais legais no Django é auto
validação de formulários.
• A entrada de dados em uma aplicação Web é uma
parte muito crítica, praticamente expomos partes
sensíveis de nossa aplicação para que hackers
baguncem tudo.
Forms.py
Integração model + view +
forms
• Criamos um formulário que pode ser utilizado para
criarmos novos posts para o nosso blog.
• Agora precisamos mostra-lo em alguma página.
Views.py
Urls.py
Templates
• Nós temos quase tudo pronto, temos a URL, temos
a View e temos o formulário, precisamos agora
criar um novo arquivo chamado de post.html e
dentro dele digitamos {{form.as_p}}.
• Nos templates nós podemos utilizar tags especiais
que não existem no HTML, elas são específicas do
Django e as chamamos de template tags.
• {% for n in numeros %}

{% if numero %}
Muito Obrigado

Mais conteúdo relacionado

Mais procurados

Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonOsvaldo Santana Neto
 

Mais procurados (20)

Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Como tornar-se um programador Python melhor
Como tornar-se um programador Python melhorComo tornar-se um programador Python melhor
Como tornar-se um programador Python melhor
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
TWP38 Revisão Geral 2
TWP38 Revisão Geral 2TWP38 Revisão Geral 2
TWP38 Revisão Geral 2
 
Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 

Destaque

Makrinos and Bowden 2016
Makrinos and Bowden 2016Makrinos and Bowden 2016
Makrinos and Bowden 2016Daniel Makrinos
 
How to Master Your Presentations Using Presenter View in PowerPoint
How to Master Your Presentations Using Presenter View in PowerPointHow to Master Your Presentations Using Presenter View in PowerPoint
How to Master Your Presentations Using Presenter View in PowerPointsaoalma
 
Radiology Rounds 71 Year Old Female,
Radiology Rounds 71 Year Old Female,Radiology Rounds 71 Year Old Female,
Radiology Rounds 71 Year Old Female,radRounds Slideshare
 
Mejores Imagenes Internet 2007
Mejores Imagenes Internet 2007Mejores Imagenes Internet 2007
Mejores Imagenes Internet 2007Jose Gomez
 
Workshop on rntcp_Tuberculosis_Bengali
Workshop on rntcp_Tuberculosis_BengaliWorkshop on rntcp_Tuberculosis_Bengali
Workshop on rntcp_Tuberculosis_BengalidrdduttaM
 
Tema 1. la tierra y el universo
Tema 1. la tierra y el universoTema 1. la tierra y el universo
Tema 1. la tierra y el universosulidi
 
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016riya_karmakar
 
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...EloGroup
 
Referat bichih zaawar
Referat bichih zaawarReferat bichih zaawar
Referat bichih zaawardagvajamts
 
National aids control programme
National aids control programmeNational aids control programme
National aids control programmeSachin Patne
 

Destaque (10)

Makrinos and Bowden 2016
Makrinos and Bowden 2016Makrinos and Bowden 2016
Makrinos and Bowden 2016
 
How to Master Your Presentations Using Presenter View in PowerPoint
How to Master Your Presentations Using Presenter View in PowerPointHow to Master Your Presentations Using Presenter View in PowerPoint
How to Master Your Presentations Using Presenter View in PowerPoint
 
Radiology Rounds 71 Year Old Female,
Radiology Rounds 71 Year Old Female,Radiology Rounds 71 Year Old Female,
Radiology Rounds 71 Year Old Female,
 
Mejores Imagenes Internet 2007
Mejores Imagenes Internet 2007Mejores Imagenes Internet 2007
Mejores Imagenes Internet 2007
 
Workshop on rntcp_Tuberculosis_Bengali
Workshop on rntcp_Tuberculosis_BengaliWorkshop on rntcp_Tuberculosis_Bengali
Workshop on rntcp_Tuberculosis_Bengali
 
Tema 1. la tierra y el universo
Tema 1. la tierra y el universoTema 1. la tierra y el universo
Tema 1. la tierra y el universo
 
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016
Riya Karmakar CLAD - 11-Jun-2014 to 10-Jun-2016
 
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...
[BPM Day Três Poderes 2014 – Brasília] MP – Softwares Públicos que apoiam a G...
 
Referat bichih zaawar
Referat bichih zaawarReferat bichih zaawar
Referat bichih zaawar
 
National aids control programme
National aids control programmeNational aids control programme
National aids control programme
 

Semelhante a Django Framework Guia Completo

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Rafael Sales Pavarina
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 

Semelhante a Django Framework Guia Completo (20)

My first app django
My first app djangoMy first app django
My first app django
 
Python 06
Python 06Python 06
Python 06
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Oficina de Django
Oficina de DjangoOficina de Django
Oficina de Django
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Django
DjangoDjango
Django
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Palestra
PalestraPalestra
Palestra
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 

Django Framework Guia Completo

  • 1. Django The web framework for perfectionists with deadlines. O framework web para perfeccionistas com prazos.
  • 3. Django Framework • É um conjunto de ferramentas prontas para uso • É possível criar os mais variados tipos de aplicações • É escrito em Python • É modular • É fácil
  • 4. Como funciona? Resumidamente é isso Cliente Servidor Requisição Resolução da URL View (controller) Resposta Model Template Formulários
  • 5. Local de trabalho • No windows vamos utilizar uma pasta chamada curso localizada em C:, por favor criem. • C:curso
 E vamos navegar até lá via prompt de comando
 cd C:curso • No linux/mac vamos criar uma pasta na raiz do nosso usuário chamada curso
 mkdir ~/curso
 cd ~/curso
  • 6. Terminologia $ no início da linha significa um comando no terminal/CMD >>> no início da linha significa o resultado de alguma interação
 no interpretador python
  • 7. Ambiente virtual • É aconselhável utilizar um “Ambiente virtual” para instalar nossos projetos. É prático no isolamento de dependências. • $ python -m venv ambiente • No linux ou Mac
 $ source ambiente/bin/activate • No windows
 C:curso> ambienteScriptsactivate • Quando ativamos, nosso terminal de comandos vai ficar parecido com isso
 (ambiente) C:curso> 
 (ambiente) ~/pasta$
  • 8. Gerenciando dependências • O PIP é um gerenciador de pacotes Python que utilizamos para instalar novos pacotes e gerenciar as nossas dependências. • (ambiente) ~/curso$ pip install django
  • 9. Python Blog • Nós vamos criar um blog (falem agora ou calem-se para sempre). • Postar novas histórias. • Deletar posts antigos. • Listar as histórias na página inicial.
  • 10. Iniciando um Projeto Django • No windows digite
 (ambiente) C:curso> python ambienteScripts django-admin.py startproject meusite . • No linux digite
 (ambiente) ~/curso$ django-admin startproject meusite .
  • 11. O resultado • O django-admin criou uma pasta chamada meusite e dentro dela foram postos alguns arquivos. • Nossa estrutura é a seguinte:
 .meusite
 ── manage.py
 └── meusite
 ── __init__.py
 ── settings.py
 ── urls.py
 └── wsgi.py
  • 12. Vamos dar uma olhada de perto em alguns arquivos • Dentro da segunda pasta meusite nós temos dois arquivos muito importantes, o settings.py e urls.py. • O settings.py guarda toda a configuração do nosso projeto, STATIC_URL = '/static/' • O arquivo urls.py é responsável por guardar as ‘rotas' disponíveis em nossa aplicação.
  • 13. Entendendo a analogia do Django • Dentro do nosso grande projeto ‘meusite' podem existir vários APPS. • app: Blog
 app: Site
 app: PyGram (instagram de python, oi?) • É um pouco confuso inicialmente mas faz todo o sentido dividir as responsabilidades em apps diferentes. Esses Apps podem ou não ter algum tipo de comunicação. • Uma boa regra para saber se algo é um app ou não é perguntar-se “isso vai ser muito complexo?”.
  • 14. Nosso APP Blog • Vamos entrar na pasta recém criada (meusite) • (ambiente) $ cd ~/curso/meusite
 (ambiente) $ cd C:cursomeusite • Agora criamos o nosso app
 (ambiente) $ python manage.py startapp blog
  • 15. Nosso APP Blog • Note que uma pasta chamada blog foi criada e dentro dela nós temos vários outros arquivos.
 
 .meusite
 ── blog
 │   ── __init__.py
 │   ── admin.py
 │   ── apps.py
 │   ── migrations
 │   │   └── __init__.py
 │   ── models.py
 │   ── tests.py
 │   └── views.py
 ── …….
  • 16. Testando se nosso projeto funciona • No prompt / terminal digite
 (ambiente) $ python manage.py runserver • python manage.py runserver
 Performing system checks...
 
 February 12, 2016 - 13:10:54
 Django version 1.9.2, using settings 'meusite.settings'
 Starting development server at http://127.0.0.1:8000/
 Quit the server with CONTROL-C. • Acessem o endereço http://127.0.0.1:800/ no navegador.
  • 18. Views Definimos a lógica do nosso blog
  • 20. urls.py Caminhos (rotas) que podem ser acessadas pelos usuários ou maquinas
  • 21. Arquivo urls.py No nosso APP de blog não há um arquivo urls.py então vamos cria-lo com o seguinte código
  • 24. Models.py • Precisamos conhecer um pouquinho sobre um conceito muito utilizado em linguagens de programação, a Programação Orientação a Objetos (POO). • É uma maneira de organizarmos propriedades e funções (métodos). • Um gato pode ser considerado um objeto.
 Porque um gato possui a cor dos seus olhos, a cor do seu pelo e as ações como ‘arranhar’, ‘comer' e ‘DORMIR' (eles so dormem~)
  • 25. Models.py • No nosso caso nós queremos modelar coisas que existem em nosso blog, que é o caso das postagens. Um post tem.. • Título
 Texto
 Autor
 Data de publicação
  • 27. Trabalhando com versões do nosso Post • No django nós temos o conceito de migrações, guardem esse nome porque ele salva vidas! • A migração é uma ferramenta que cria versões dos nosso modelos para banco de dados, sempre que alteramos o nosso models.py, devemos rodar o comando • (ambiente) ~/meusite $ python manage.py makemigrations • Teremos a seguinte resposta
 0001_initial.py:
 - Create model Post • Por sequência usamos o comando
 (ambiente) ~/meusite $ python manage.py migrate
  • 28. O que fizemos até agora? • Criamos uma view chamada index, que mostra algumas informações. • Criamos uma rota para acessar a view index. • Criamos um modelo para os nossos Posts. • ‘Migramos' o nosso banco de dados para versão mais atual (incluímos o Post).
  • 29. Django Admin Parece que o jogo virou não é mesmo?
  • 30. Django Admin • O Django já vem com uma ferramenta de administração para os seus modelos para banco de dados. • É possível fazer muita coisa com o Django admin e isso nos economiza muito tempo mesmo!
  • 32. Django Admin • Para que possamos acessar o Admin do nosso site é preciso criar um Super Usuário. Vamos para linha de comando. • (ambiente) ~/meusite$ python manage.py createsuperuser
  • 33. Django Admin • Acessando o endereço http://127.0.0.1:8000/admin
  • 34. Views do nosso Blog • Notamos que podemos inserir novos posts pelo admin do django, também podemos atualiza-los e remove-los. • Esse cenário nem sempre é satisfatório, muitas vezes não queremos que alguém acesse uma área administrativa para atualizar/deletar/criar algo. • Vamos então aprimorar a lógica do nosso blog para conseguirmos inserir Posts sem um painel administrativo.
  • 35. Templates html • Vamos criar uma pasta chamada templates dentro do nosso app blog e um arquivo chamado index.html. E Teremos uma estrutura assim. • .blog
 ── __init__.py
 ── admin.py
 ── apps.py
 ── forms.py
 ── migrations
 │   ── 0001_initial.py
 │   ── __init__.py
 ── models.py
 ── templates
 │   ── index.html
  • 36. • Para mostrar o nosso recém criado arquivo html, vamos modificar um pouquinho o nosso view.py, observe. Views e Templates
  • 38. Formulários • Uma das coisas mais legais no Django é auto validação de formulários. • A entrada de dados em uma aplicação Web é uma parte muito crítica, praticamente expomos partes sensíveis de nossa aplicação para que hackers baguncem tudo.
  • 40. Integração model + view + forms • Criamos um formulário que pode ser utilizado para criarmos novos posts para o nosso blog. • Agora precisamos mostra-lo em alguma página.
  • 43. Templates • Nós temos quase tudo pronto, temos a URL, temos a View e temos o formulário, precisamos agora criar um novo arquivo chamado de post.html e dentro dele digitamos {{form.as_p}}. • Nos templates nós podemos utilizar tags especiais que não existem no HTML, elas são específicas do Django e as chamamos de template tags. • {% for n in numeros %}
 {% if numero %}