Upload
truongtram
View
216
Download
1
Embed Size (px)
Citation preview
Objetivo
A oficina terá seu foco em desenvolvimento back-end, utilizando o framework Django da
linguagem Python.
O que será abordado?
● Introdução a linguagem Python;● Instalação da ferramenta e criação de
projeto/aplicação;● Arquitetura MTV x MVC;● Manipulação de Banco de Dados;● Criação de um CRUD (Create, Read, Update e Delete);
○ O exemplo será para o gerenciamento de filmes;● Upload de mídias;● Modificações no projeto para utilização de outros
gerenciadores de bancos de dados.
Sumário
● Princípios Básicos
● Criação de Projeto Django
● Estrutura de projeto Django
● Configuração do Projeto
● Arquivos Models.py e Forms.py
Python
● Orientada a Objetos
● Tipagem dinâmica e forte
● O próprio Python infere o tipo dos dados que uma variável recebe
● Sensitivo a espaços
○ Não possui { } e ;
String
>>> "teste"'teste'
Concatenar
>>> "Coé " + "Rapaziada"'Coé Rapaziada'
Métodos
>>> len(“paralelepipedo”)14
Arrays/Listas
>>> sorteio = [4, 23, 22, 9, 75, 61]
Métodos: len, sort, append, reverse
Exemplo
>>> sorteio.reverse()
>>> print(sorteio)
>>> [61, 75, 9, 22, 23, 4]
Estruturas de decisão: if, elif, else
Exemplo:
imc = 11if imc < 18:
print("Abaixo do peso")elif 18 <= imc < 25
print(“Peso ideal”)elif 25 <= imc < 35:
print("Sobrepeso")else:
print("Obeso”)
Ambiente Virtual
Ambiente virtual (também chamado de virtualenv).
Desenvolver usando DJANGO dentro de uma virtualenv é altamente recomendado pois ela isola seus projetos, ou seja, pode-se alterar um projeto sem afetar outros.
E agora vamos para a instalação do Django...
Instalação Python Linux
Download python:
sudo apt-get install python3.5
Checar instalação:$ python3 --version
Iniciar pythonpython3
Instalação Django
Criar pasta de instalação (oficinaDjango):
mkdir <pasta>
Acessar pasta:
cd <pasta>
Criar ambiente virtual:
python3 -m venv myvenv
Instalação Django
Iniciar ambiente virtual:
source myvenv/bin/activate
Instalar PIP - Python Package Index:
pip install --upgrade pip
Instalar Django:
pip install django~=1.9.0
Criar Projeto
Criar projeto (oficinaDjango):
django-admin startproject <nome>
Gerar banco de dados:
python3 manage.py migrate
Inicializar servidor:
python3 manage.py runserver
Parte Front-End
● Como o foco da oficina o Back-End da aplicação, iremos disponibilizar os arquivos referente ao Front-End através do seguinte link: https://goo.gl/7dm7S7
● Ao extrair o conteúdo, mover as pastas para:○ oficinaDjango/oficinaDjango/static○ oficinaDjango/oficinaDjango/templates
Principais arquivos - settings.pysettings.py - configurações de banco de dados, arquivos estáticos e indicar o caminho base para as mídias e demais configurações de aplicação.
● import os - maneira portável de usar funcionalidades do sistema operacional (paths);
● BASE_DIR - variável que vai ter o caminho do nosso projeto Django. Serve para que não tenhamos que trabalhar com caminhos absolutos;
Principais arquivos - settings.py
● DEBUG = True - mostrar informações detalhadas em uma página sobre o erro ocorrido;
● ALLOWED_HOSTS - lista de strings representando o host/nome de domínio que o projeto Django pode servir. Serve como uma medida de segurança para evitar que um invasor possa realizar certos tipos de ataques (envenenamento de cache, disparo de e-mails com links maliciosos, etc);
Principais arquivos - settings.py
● INSTALLED_APPS - lista de strings designando todas as aplicações que estão habilitadas nesta instalação do Django;
Principais arquivos - settings.py
● MIDDLEWARE - lista de classes Middleware que serão usadas no seu projeto Django. Middleware é um framework do Django, que tem um conjunto de classes que servem como “gatilhos” para processar e modificar request/response;
Principais arquivos - settings.py
● ROOT_URLCONF - URL raiz do projeto. O Django precisa de um URL que seja o ponto de partida, declarado nessa variável;
Principais arquivos - settings.py
● TEMPLATES - lista de configurações para todas as engines de templates a serem usadas pelo Django;
Principais arquivos - settings.py
● WSGI_APPLICATION - caminho Python completo para o objeto WSGI da aplicação que os servidores built-in do Django vão utilizar;
● STATIC_URL - URL utilizada para se referir aos arquivos estáticos localizados no STATIC_ROOT;
● STATICFILES_DIRS - caminho utilizado para localizar os arquivos estáticos;
Principais arquivos - settings.py
● DATABASES - dicionário de dicionários onde cada dicionário contém as configurações para uso de um banco de dados, possibilitando assim o uso de múltiplos bancos num mesmo projeto.
● regex - expressão regular para combinar padrões de URL em strings;
● view - função “view” usada para processar a solicitação do usuário para um URL correspondente;
● kwargs - argumentos de keywords arbitrárias passados para a “view” de destino;
● name - identificador único para a dada URL.
Principais arquivos - urls.pyurls.py - URLs das views;
Principais arquivos - views.pyviews.py - definição das funções que vão ser exibidas nas páginas;
● def - declaração da função view;● index - nome da função;● render - função que vai renderizar (montar) nosso
modelo.
Principais arquivos - forms.pyforms.py - definição dos formulários onde o usuário entra com os dados para interagir com o banco;
● class - declaração do nosso formulário;● AtorForm - nome do formulário;● ModelForm - definição do tipo de objeto, o Django já
estrutura ele de acordo com o forms.ModelForm;
Principais arquivos - forms.pyforms.py - definição dos formulários onde o usuário entra com os dados para interagir com o banco;
● class Meta - aqui dizemos ao Django qual modelo deveria ser utilizado para criar o formulário (“model = Ator”);
● fields - campos de preenchimento do nosso formulário.
Principais arquivos - models.pymodels.py - declaração dos objetos relacionados com o banco de dados;
● class - palavra reservada que indica que estamos definindo um objeto;
● Ator - nome do nosso modelo;● models.Model - significa que o Ator é um modelo de
Django, e que deve ser salvo no banco.
MVC x MTV
MVC é um padrão de desenvolvimento que separa o desenvolvimento nas três camadas seguintes:
Model | View | Controller
MTV é uma outra interpretação que o Django deu para o padrão MVC, chamando o “View” de “Template” e o “Controller” de “View”.
Model | Template| View
MVC
Model - é implementado o banco de dados ou o modelo objeto-relacional;
View - é onde fica a interface do sistema;
Controller - são implementadas regras de negócios, onde são processados os dados vindos da camada Model e passados para a camada View.
Alguns frameworks que utilizam o padrão MVC:
● Ruby on Rails; TurboGears; Mentawai; Laravel.
MTV
Model - é implementado o banco de dados ou o modelo
objeto-relacional;
Template - é implementado o modo que a informação vai
ser apresentada;
View - função de retorno para uma URL, porque esta
função de retorno descreve qual informação deve ser
apresentada.
MTV
Onde se encaixa o “Controller”, então?
Pode-se dizer que é o próprio framework, no caso do Django, o maquinário que envia uma requisição para a “View” apropriada, de acordo com a configuração de URL do Django.
Configurando o settings.py
● Inserção do app no projeto.
● Importação dos arquivos estáticos.
● Importação dos templates.
Templates
● Um template é um arquivo que nos permite exibir diferentes informações de uma mesma forma consistente.
● Por exemplo, poderíamos usar um template para escrever uma carta, pois apesar de terem destinos e conteúdos diferentes, possuem o mesmo formato.
● O formato do template do Django é baseado em HTML.
Adição dos templates
● Vamos criar um diretório para os templates.
● Os templates são salvos no diretório oficinaDjango/templates/oficinaFilmes.
URLs
● Uma URL nada mais é que um endereço web, nós vemos uma URL toda vez que acessamos uma página da web.
● Cada página deve ter sua própria URL, dessa forma o app sabe o que mostrar ao usuário que acessa uma URL.
Importando as URLs
● Vamos abrir o arquivo oficinaDjango/urls.py .
● Vamos utilizar a função “include” para fazer a importação das urls do arquivo, que criaremos posteriormente, oficinaFilmes/urls.py .
Adição das URLs no app
● Vamos criar o arquivo oficinaFilmes/urls.py e inserir as seguintes linhas:
● Aqui estamos apenas importando as URLs do Django e todas as views, que criaremos posteriormente.
Arquivos estáticos
● Arquivos estáticos são todas as imagens e arquivos CSS, é todo arquivo que não é dinâmico, ou seja, não importa o contexto da requisição, seu conteúdo será sempre o mesmo, para todos os usuários.
Importando arquivos estáticos
● Em oficinaDjango/settings.py, para importar os arquivos estáticos que serão criados, inserir o seguinte código:
Arquivos models.py e forms.py● Introdução a BD
● Declaração do Banco no models.py
● Criação dos forms.py
L
Introdução a BD
● Coleção de dados, onde são armazenadas informações (geralmente em tabelas) utilizadas na aplicação, como:○ Dados do usuário;○ Dados de postagens (ou filmes nesse caso);○ Etc.
ator
ID nome idade
1 “Morgan Freeman” 80
2 “Ben Affleck” 45
Introdução a BD
● Para gerenciar o banco de dados existem algumas opções de SGBDS, algumas das mais conhecidas são:
○ MySQL○ PostgreSQL○ Oracle○ SQLite○ MongoDB
● SQLite○ Banco de dados padrão do Django;○ Não irá requerer nenhuma instalação adicional;
Declaração do BD no models.py
● Vamos até o arquivo oficinaFilmes/models.py
● Nesse arquivo serão definidos todos os modelos que iremos utilizar na aplicação;
● Cada modelo corresponde a uma tabela do banco de dados;
Declaração do BD no models.py
● Vamos até o arquivo oficinaFilmes/models.py
● Nesse arquivo serão definidos todos os modelos que iremos utilizar na aplicação;
● Cada modelo corresponde a uma tabela do banco de dados;
● Vamos codificar!
Vamos entender o que acabamos de fazer!
● from … import …○ Adicionam partes de outros arquivos
● class Ator(models.Model):○ Define o nosso modelo de Ator
Vamos entender o que acabamos de fazer!
● models.CharField - String
● models.PositiveIntegerField - Int Unsigned
● models.DecimalField - Números decimais
○ Definem os tipos de dados de cada uma das colunas da tabela
● models.ManyToManyField(Ator)○ Observe que cada filme pode ter vários atores, assim como
cada ator pode estar em vários filmes. Esse é o comando responsável por criar essa relação.
Vamos entender o que acabamos de fazer!
● models.ForeignKey○ Cria uma relação com outra tabela, onde por exemplo, um
filme teria apenas um diretor.
● Outros tipos de dados podem ser verificados em:○ https://docs.djangoproject.com/en/1.11/ref/models/fields/
Vamos entender o que acabamos de fazer!
● def __str__(self):return self.nome_ator
○ Método criado para retornar o nome de um ator. Atenção para o duplo underscore (_) de cada lado de str.
Criando as tabelas no Banco
Com os modelos criados, agora podemos criar as tabelas no BD. Para isso é preciso realizar os seguintes comandos:
Para informar ao Django das atualizações (cria migrations):
python3 manage.py makemigrations oficinaFilmes
Para aplicar essas atualizações:
python3 manage.py migrate oficinaFilmes
Criação dos forms.py
● Os formulários nos permitem manipular da maneira que desejarmos as interfaces para cadastrar e editar os registros;
● Pode-se também criar um ModelForm que irá mandar as informações diretamente para um Modelo;
● Agora vamos criar o arquivo oficinaFilmes/forms.py
Criação dos forms.py
● Os formulários nos permitem manipular da maneira que desejarmos as interfaces para cadastrar e editar os registros.
● Pode-se também criar um ModelForm que irá mandar as informações diretamente para um Modelo;
● Agora vamos criar o arquivo oficinaFilmes/forms.py
● Vamos codificar!
● Importamos os módulos necessários para a criação do formulário;
● Foram criados dois formulários ModelForm: AtorForm e ProducaoForm;
● A classe meta indica que qual modelo será usado para cada um dos formulários através de model;
● Já a variável fields indica quais os campos serão utilizados em cada formulário;
Vamos entender o que acabamos de fazer! (rapidamente)
● A função __init__ funciona como um construtor para a classe, ela será executada cada vez que o formulário for instanciado;
● Estamos utilizando essa função para podermos utilizar as classes aplicar as classes do Bootstrap aos campos de cada formulário.
Vamos entender o que acabamos de fazer! (rapidamente)
Visualização do formulário
● Pronto, agora que temos nossos formulários criados;
● Para visualizá-lo precisaremos configurar uma rota em urls.py para um função em view.py que será responsável por tratar a requisição ao formulário;
● Para teste iremos realizar o processo a seguir...
Visualização do formulário
● Inserir o seguinte código em oficinaFilmes/urls.py
● Inserir o seguinte código em oficinaFIlmes/view.py
url(r'^atorForm/$', views.ator_form, name='ator_form')
def ator_form(request): form = AtorForm() return render(request, 'oficinaFilmes/cadastroAtor.html', {'form': form})
REFERÊNCIAS
https://tutorial.djangogirls.org/pt/django/
https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html
https://docs.djangoproject.com/en/1.11/
DÚVIDAS?