Python para Web
Prof. Dr Carlos Anderson
Introdução
●
Lançada em 1991 por Guido van Rossum, é uma
linguagem livre (até para projetos comerciais) e hoje
pode-se programar para desktops, web e mobile:
– dinâmica (não precisa declarar tipos);
– interpretada (usa um interpretador antes do SO);
– robusta (código seguro);
– multiplataforma (vários SO);
– multi-paradigma (orientação à objetos, funcional, refletiva e
imperativa) ;
– roda em JVM e .NET Framework;
Desvantagens
●
Incompatibilidade entre versões;
– Python 2 foi o padrão da linguagem por muito
tempo e receberá atualizações de segurança até
2020.
– Python 3 introduziu algumas mudanças que
quebraram a compatibilidade com a versão anterior
o que criou a necessidade de se manter duas
versões da linguagem. Constantemente evoluindo
e recebendo novas funcionalidades, que não
estarão presentes na versão anterior.
Do que preciso para iniciar?
●
Interpretador Python:
– Windows: baixar e instalar;
– Linux e Mac OS: Provavelmente já vem instalado,
mas pode ser instalado também;
– Disponível em outras plataformas: AIX, Palm OS,
AS/400, PSP, etc.
Funciona assim
Código
.py
Interpretado Có[Link]
(bytecode)
PVM
Copilado
Instalando o Python no Linux
●
Abra o terminal e digite:
– $ sudo apt-get update
– $ sudo apt-get install python3
●
No terminal digite:
– $ python3
>>> print(“Olá mundo!”)
A sintaxe
●
Um comando por linha
– Usar ; para mais de uma linha
– Usar \ para continuar em outra linha
●
Bloco de comando por indentação
– Não misture Tabs e espaços
●
Comentários
– Caracter # ou """strings multilinhas"""
– Diferencia maiúsculas de minúsculas
A sintaxe
●
Diferencia entre maiúscula e minúsculas;
●
Nome deve iniciar com letra ou "_";
●
Restante do nome pode conter letras, números
e "_";
●
Não é permitido o uso de palavras reservadas
mas quando necessário costuma-se usar um
"_" no fim do nome (ex. "from_").
A sintaxe
●
bool()
●
True, False
●
0, 0.0, [], (), {}, "", set(),
None, ... - Falso
●
==, !=, >, >=, <, <=, is, is not,
and, or, in e not in
●
Usar "is None" para
comparações com None
●
Prefira "if valor: ..." no lugar de
"valor == True" ou "valor != 0".
A sintaxe
●
Atribuição simples (=);
●
Atribuição "aumentada":
+=, -=, *=, /=, //=, **=,
%=, |=, &=, ^=, <<= e
>>=
●
Atribuição por tupla
a, b = b, a
(a, b) = (b, a)
A sintaxe
●
Comando de decisão;
●
Executa o bloco de
código em if ou elif caso a
condição for verdadeira;
●
Se nenhuma condição for
verdadeira executa o
bloco else;
●
Expressão if usada entre
parênteses
A sintaxe
●
Executa o bloco de
código, em loop,
enquanto a condição
for verdadeira;
●
A cláusula 'else' pode
ser usada e será
executada caso o loop
termine normalmente
(sem break);
A sintaxe
●
Itera sobre os
elementos de um
objeto (iterador,
seqüência, …);
●
Pode ser usado na
forma: 'for key, valor
in [Link](): ...' onde
ele faz atribuição por
tupla;
Tipos de dados
●
Em Python, todos os tipos de dados são
objetos;
●
Quando fazemos algo como: int("0") estamos,
na verdade instanciando um objeto do tipo int()
passando "0" para seu construtor.
Listas
Listas
Dicionários
Funções e parâmetros
●
param - nome da variável
local que receberá o valor;
●
param = valor - assume
valor default caso não
informado;
●
*params - lista dos
parâmetros adicionais;
●
**dparams - dicionário com
parâmetros adicionais
passados na forma param =
valor;
Vamos então conhecer o
Vamos então conhecer o
https://
[Link]/
E classes?
Você REALMENTE sabe o que é
desenvolvimento web?
Definição
●
O desenvolvimento web se trata da criação de
um software, seja ele um sistema, um app, um
portal ou um site, que está conectado a uma
rede, podendo ser internet ou intranet (uma
rede interna);
Fonte: [Link]
Quais as vantagens?
●
Maior mobilidade (facilidade de acesso);
●
Menos preocupações e investimentos;
●
Integração entre sistemas;
●
Não preciso instalar nada no cliente;
●
Gerenciamento de atualizações centralizadas;
●
Escalabilidade no processamento;
●
Dentre outros...
Porém, como funciona uma
aplicação web de fato?
●
Os responsáveis por fazer com que uma
aplicação web funcione são os servidores web,
as solicitações realizadas pelo usuário, o
protocolo HTTP, os métodos HTTP, outros tipos
de protocolo e a resposta do HTTP.
Porém, como funciona uma
aplicação web de fato?
●
Servidor web;
●
Solicitações dos usuários;
●
Protocolo HTTP;
●
Métodos HTTP – POST e GET;
●
Outros tipos de protocolo – FTP, SMTP, POP e
IMAP, etc;
●
Resposta do HTTP – Erro 404.
A atuação profissional
●
Desenvolvedor front-end:
– interfaces de um projeto web;
●
Desenvolvedor back-end:
– RN, segurança, banco de dados e integração dos
serviços web;
●
Desenvolvedor full-stack:
– tanto do front-end quanto do back-end.
●
●
Vamos trabalhar com...
Quem usa Django?
Sobre o Django
●
Django é um framework web de alto nível escrito
em Python que estimula o desenvolvimento rápido
e limpo;
●
Construído por desenvolvedores experientes, ele
cuida de grande parte incômoda do
desenvolvimento web;
●
É gratuito e de código aberto.
Fonte: [Link]
Por que Django?
●
O Django é atualmente o principal framework
para desenvolvimento de aplicações web em
Python.
●
Baseado no padrão MTV (Model-Template-
View), uma variação do MVC, esse framework
oferece recursos para a implementação das
necessidades mais comuns nesse contexto.
MVT – Model, View e Template
●
Como é MVC mesmo?
– View – Fala Controller ! O usuário acabou de pedir para acessar o
Facebook ! Pega os dados de login dele ai.
– Controller – Blz. Já te mando a resposta. Ai model, meu parceiro,
toma esses dados de login e verifica se ele loga.
– Model – Os dados são válidos. Mandando a resposta de login.
– Controller – Blz. View, o usuário informou os dados corretos. Vou te
mandar os dados dele e você carrega a página de perfil.
– View – Vlw. Mostrando ao usuário…
Fonte: [Link]
MVC-X-Arquitetura-do-Django
MVT – Model, View e Template
●
Model:
– As Models do MVC e do MVT são equivalentes em
responsabilidades;
– Cada classe da modelo se compara a uma tabela
do BD, e as instâncias destas classes, representam
os registros destas tabelas.
Fonte: [Link]
MVT – Model, View e Template
●
View:
– Responsável pela implementação das regras de
apresentação e negócio do nosso sistema;
– É nela onde iremos nos comunicar com a Model e
a Template, cadastrando e tratando as informações
recebidas. Retornando para o usuário uma
resposta, como HTMLs, XML, ou erros
encontrados.
Fonte: [Link]
MVT – Model, View e Template
●
Template:
– É a camada que retorna a visão para o usuário do
programa.
– Essa camada é composta por HTML, CSS,
Javascript e etc. Geralmente linguagens focadas na
apresentação do site para o usuário.
Fonte: [Link]
Como ele funciona?
Como ele funciona?
URL dispatcher
●
Chega requisição para o servidor web, Django que tenta
descobrir do que ela se trata.
●
Essa parte é feita pelo urlresolver do Django:
– Note que o endereço de um site se chama URL - Uniform
Resource Locator, em português Localizador de Recursos
Uniforme, dessa forma o nome urlresolver, ou resolvedor de urls,
faz sentido;
●
Isso não é muito complexo - ele pega uma lista de padrões
e tenta corresponder com a URL;
●
Identificado o que é pra fazer, passa a solicitação para a
chamada view.
Chega de falar e vumbora fazer!
Entendo a estrutura criada
O arquivo mysite/ exterior é apenas um contêiner para o seu projeto. Seu nome
não importa para Django;
[Link]: Um utilitário de linha de comando que permite a você interagir com
esse projeto Django de várias maneiras;
O arquivo mysite/ interior é o pacote Python para o seu projeto. Seu nome é o
nome do pacote Python que você vai precisar usar para importar coisas do seu
interior;
mysite/__init__.py: Um arquivo vazio que diz ao Python que este diretório deve
ser considerado um pacote Python;
mysite/[Link]: Configurações para este projeto Django;
mysite/[Link]: As declarações de URLs para este projeto Django; um “índice” de
seu site movido a Django;
mysite/[Link]: Um ponto de integração para servidores WEB compatíveis com
WSGI usado para servir seu projeto.
●
Qual é a diferença entre um projeto e um app?
– Um app é uma aplicação que faz alguma coisa;
– Um projeto é uma coleção de configurações e
apps.
●
Um projeto pode conter múltiplos apps;
●
Um app pode estar em múltiplos projetos;