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

Django Básico

  • 1.
    Django The web frameworkfor perfectionists with deadlines. O framework web para perfeccionistas com prazos.
  • 2.
  • 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ícioda 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 • OPIP é 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ósvamos 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 ProjetoDjango • 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 • Odjango-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 umaolhada 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 analogiado 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 nossoprojeto 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.
  • 17.
  • 18.
  • 19.
  • 20.
    urls.py Caminhos (rotas) quepodem ser acessadas pelos usuários ou maquinas
  • 21.
    Arquivo urls.py No nossoAPP de blog não há um arquivo urls.py então vamos cria-lo com o seguinte código
  • 22.
  • 23.
  • 24.
    Models.py • Precisamos conhecerum 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 nossocaso 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
  • 26.
  • 27.
    Trabalhando com versões donosso 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 fizemosaté 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 queo jogo virou não é mesmo?
  • 30.
    Django Admin • ODjango 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!
  • 31.
  • 32.
    Django Admin • Paraque 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 • Acessandoo endereço http://127.0.0.1:8000/admin
  • 34.
    Views do nossoBlog • 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 • Vamoscriar 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 mostraro nosso recém criado arquivo html, vamos modificar um pouquinho o nosso view.py, observe. Views e Templates
  • 37.
  • 38.
    Formulários • Uma dascoisas 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.
  • 39.
  • 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.
  • 41.
  • 42.
  • 43.
    Templates • Nós temosquase 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 %}
  • 44.