Welcome to the

Darlan Nakamura

Robson Cruz

The web framework for perfectionists with deadlines.

/darlannakamura

/deadpyxel

Intro

O framework web para perfeccionistas com deadlines.

O que isso quer dizer?

Framework Web

Coleção de classes, métodos, procedimentos e bibliotecas para facilitar alguma tarefa de desenvolvimento web.

 

Entre outros recursos, Django possui:

  • Autenticação de usuários;
  • Linguagem para templates;
  • roteamento de urls;
  • Painel de administração;
  • entre outros...

Permite a criação de páginas web dinâmicas de maneira rápida e fácil.

Don't Repeat Yourself (DRY)

  • Implementações não devem se repetir;
  • Alta reutilização de código;
  • A menor unidade ou lógica de um sistema deve ser escrita apenas uma vez

Acoplamento fraco,
alta coesão,
Código Limpo

Para Perfeccionistas...

Jamais siga o princípio "WET"
(waste everyone's time!)

Com DEADLINES...

O projeto Django surgiu para auxiliar equipes de jornalismo, que vivem sobre prazos apertados.

 

O setup inicial para um projeto Django é mínimo e extremamente rápido.

Como isso tudo funciona?

Cliente

djangoapp.com/home

Como isso tudo funciona?

http://submarinecablemap.com/

Como isso tudo funciona?

Servidor

djangoapp.com/home

Django framework

URL routing

Código python

Banco de dados

Template HTML

template com

informações solicitadas

Model, View, Controller

  • Model: Os dados e informações da aplicação;
  • View: A interface/camada de interação do usuário;
  • Controller: A lógica da aplicação, define o que fazer para cada caso de uso

Django utiliza MTV!

Model, View e Template

E o controller?

É o próprio Django e seus middlewares

Middlewares?

São os responsáveis por realizar o processamento de requisições e respostas.

 

Pode ser entendido como um "plug-in" que altera globalmente como o Django trata as requisições.

 

  • AuthenticationMiddleware;
  • CommonMiddleware;
  • SessionMiddleware;
  • O seu próprio middleware!

Quem usa?

Vale a pena aprender Django?

Instalação

Como instalar o django?

A instalação do Django é "altamente complexa"

$ pip install django

É recomendada a utilização de um virtualenv!

$ python -m venv django-env  # ou virtualenv django-env
$ source django-env/bin/activate  # ou .\django-env\Scripts\activate no windows

# instalar o django
(django-env) $ pip install django

Criando um novo projeto

Para criar um novo projeto Django

$ django-admin startproject <project_name>

Vamos entender a estrutura do projeto gerado:

 

  • settings.py - arquivo de configurações;
  • urls.py - configuração das urls do projeto;
  • manage.py - script de gerenciamento ;

Comandos úteis

$ python manage.py startapp <app_name>  # cria um novo app
$ python manage.py runserver  # inicializa o django "dev server"
$ python manage.py migrate # realiza as tarefas pendentes do banco

Models

WTF is a Model?

Models são modelagens de objetos que possuem a característica de ser salvos em um Banco de Dados.

Pense nos models como os elementos de "negócio" da sua aplicação.

Tudo isso é feito utilizando o Django ORM

Ativando models

Uma vez criado, devemos deixar esse model visível para o Django.

$ python manage.py makemigrations <app_name> 

Esse comando irá gerar os scripts SQL das mudanças realizadas no banco.

$ python manage.py migrate 

DJANGO ADmin ou Django CMS

$ python manage.py createsuperuser # cria um novo super-usuário

Registrar o model

Pode ocorrer a necessidade de resetar o server.

URLS, VIEWS & TEmplates

URLS.py

As urls definem os diferentes caminhos que uma requisição pode tomar na sua aplicação.

Vamos criar nossa primeira URL!

Está faltando alguma coisa...

Apresentando as Views

As views contém a "lógica" da aplicação, ou seja, o que deve ser feito em relação a cada requisição HTTP.

Templates?

Uma view recebe uma requisição, realiza o processamento, e retorna uma resposta para o cliente.

A cara do negócio: Templates

Templates são arquivos já estruturados utilizados para exibir informações de maneira consistente.

Templates em Django também possuem habilidades interessantes...

A template engine do Django trabalha com uma hierarquia de diretório particular...

Deploy

Até agora visualizamos tudo localmente...

Seria legal se pudéssemos disponibilizar esse site na Web.

Python Anywhere

Github

$ git init . # 1) inicializa o repositório git

# 2) configura as variáveis globais do git
$ git config --global user.name "Your Username"
$ git config --global user.email you@example.com

# criando um .gitignore

*.pyc
*~
__pycache__
myvenv
db.sqlite3
/static
.DS_Store
$ git status # checa o status do repositório local

# 4) adicionar nossas modificações a lista de modificações

$ git add --all . # ou git add .

# 5) realiza o commit das alterações
$ git commit -m "Primeiro blog em django, primeiro commit"
$ git remote add origin https://github.com/<github-username>/my-first-blog.git
$ git push -u origin master # envia essas mudanças para o github.com
$ pip3.6 install --user pythonanywhere

# 7) configurando o seu projeto no pythonanywhere
$ pa_autoconfigure_django.py <url_do_repositorio_git>

Funcionou, mas podia ser melhor....

Trabalhando com a Django Template Language

Querysets

Querysets são basicamente o resultado de uma query realizada no bando de dados da sua aplicação.

Para tornar esses resultados ainda mais específicos podemos utilizar filtros, ordenações e muito mais.

Atualizando nossas views e templates

Utilizando a Django Template Language podemos utilizar código e variáveis python dentro do HTML.

Isso facilita a tarefa de criar páginas com um mesmo trecho de código repetido, como blogs por exemplo.

herança de Templates

Ou seja, a Django template engine é incrivelmente poderosa

Vamos adicionar um pouco de CSS para deixar nosso blog mais bonito.

Que tal realizarmos um "update" do nosso site no PythonAnywhere?

  1. Adicione as mudanças ao git local;
  2. realize um commit;
  3. git push;
  4. Vá para o console do PythonAnywhere
$ cd ~/<pythonanywhere-username>.pythonanywhere.com
$ git pull

Realize o reload do seu WebApp e cheque o resultado

Model Forms

Temos um site bem funcional...

Mas sempre que queremos adicionar um novo post, temos que utilizar o Django Admin...

Vamos resolver isso!

O que são model Forms?

São basicamente formulários criados a partir de um model existente na aplicação.

 

Isso permite uma sincronia e garantia de consistência na aplicação.

Mãos a Obra!

Melhorias

Class-Based-Views
(CBVs)

Todas as aplicações possuem alguma forma de listagem, de visão detalhada, remoção de conteúdo, etc.

Pensando nisso, o Django já possui views "genéricas" para facilitar o desenvolvimento.

Essas views genéricas já possuem grande parte da lógica necessária para as operações simples, como listar, remover, adicionar ou atualizar informações.

DRY!

Refactoring Time!

Django possui uma maneira muito fácil de deixarmos nossas urls fáceis de entender. O atributo slug é responsável por guardar e se tornar o "apelido" para o nosso post.

Se temos um post com o título: "O Python é a melhor linguagem do mundo", queremos que a url para esse post seja:

URLS AMIGÁVEIS!

http://localhost:8000/post/o-python-e-a-melhor-linguagem-do-mundo

A maioria das aplicações hoje utilizam imagens. Inclusive a nossa, pois um post não é somente um monte de texto. O usuário pode e deve adicionar uma imagem para tornar o post mais chamativo.

ADICIONANDO IMAGENS

Como será que é feito um blog profissional?

Você gostaria que nosso blog tivesse uma cara menos sofrida?

DEIXANDO A APLiCAÇÃO MAIS BONITA

Apis em Django

O que são APIs?

Componentes básicos de uma API

  • Serializers
  • View/Viewset
  • Permissions

Robson imagem

Comunidade

Django Project

  • 11.422 PESSOAS
  • 164 PAÍSES
  • 3.833 PACOTES
  • 1.635 CONTRIBUIDORES
  • 178.235 PERGUNTAS

Django Girls

  1. 1648 VOLUNTÁRIAS
  2. 724 EVENTOS
  3. 453 CIDADES DO MUNDO
  4. AO TODO 16.033 MULHERES!!!!

cONSIDERAÇÕES FINAIS

lIVROS

lINKS

yOUTUBE

sentdex

freeCodeCamp

thenewboston

Agradecimentos

Haroldo Teruya

SECOMPP 2018 - Welcome to the Django

By Robson Cruz

SECOMPP 2018 - Welcome to the Django

Apresentação utilizada no minicurso de Django na Semana da Computação 2018 - FCT Unesp

  • 165