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.
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).
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
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 %}