Alura > Cursos de Programação > Cursos de Python > Conteúdos de Python > Primeiras aulas do curso Django: autenticação de formulários e alerta

Django: autenticação de formulários e alerta

App usuários - Apresentação

Boas-vindas a mais um curso de Django. Meu nome é Bruno Divino, serei seu guia de aprendizagem ao decorrer deste curso.

Autodescrição: Tenho pele clara e olhos verdes, estou usando óculos. Uso bigode e estou vestindo uma camiseta azul escura com o logotipo da Alura. Atrás de mim, há uma parede branca com iluminação azul.

Público-alvo e pré-requisitos

Este curso é voltado para pessoas que querem aprender Python para desenvolvimento back-end, mais precisamente, usando o framework do Django.

Para acompanhar o curso, é interessante ter conhecimentos de orientação a objetos em Python. Esse paradigma da linguagem será utilizado, por exemplo, com a funcionalidade de criação de formulários, em que instanciamos classes e objetos.

Também é interessante que ter familiaridade com os conceitos abordados no curso de Django: persistência de dados e admin, que precede este curso. Nele, começamos o projeto Alura Space, ao qual daremos continuidade nesse curso.

O que faremos neste curso?

Anteriormente, trabalhamos na página inicial do Alura Space. Agora, vamos focar nas funcionalidades de login e de cadastro de novas pessoas com o banco de dados interno do Django, utilizando o users do Django admin. Nosso objetivo é realizar o cadastro a partir de formulários personalizados na própria interface da aplicação.

Além disso, adaptaremos nosso projeto para que apenas pessoas cadastradas possam visualizar a galeria da página inicial. Ou seja, vamos aplicar a regra de negócio no nosso site.

Então, vamos estudar?

App usuários - Preparando o ambiente

Vamos avançar no projeto da Alura Space que começamos a desenvolver no último curso!

Baixando o projeto

Primeiramente, é necessário baixar o projeto em nossa máquina, então temos duas alternativas:

  1. Acessar o repositório do Github e fazer um git clone.
  2. Ou baixar o projeto zipado e descomprimi-lo.

No caso, meu projeto está em "Área de Trabalho > projetos > alura_space". Você pode escolher o diretório de sua preferência.

Em seguida, vamos iniciar o VS Code e arrastar a pasta do projeto para ele. Desse modo, o editor de códigos abrirá o projeto e podemos checar a estrutura de pastas no painel "Explorador", à esquerda.

Criando o ambiente virtual

Antes de alterar qualquer código, é imprescindível criar um ambiente virtual para nosso projeto Python.

De início, criaremos um terminal, pressionando "Ctrl + Shift + '".

Nós vamos utilizar o ambiente virtual do virtualenv, portanto usaremos o comando python -m virtualenv seguido do nome desejado. Por padrão, usamos .venv:

python -m virtualenv .venv

Uma vez criada a virtualenv, é preciso ativá-la com o seguinte comando:

.venv\Scripts\activate

Agora, nosso ambiente está ativado!

Configurando o interpretador

A seguir, vamos verificar se o interpretador selecionado no VS Code é o que está dentro do nosso ambiente virtual — ou seja, o Python que instalamos na virtualenv.

No VS Code, vamos pressionar "Ctrl + Shift + P", pesquisar a palavra "interpretador" e escolher a opção "Python: Selecionar Interpretador". Em seguida, clicaremos em "Insira o caminho do interpretador" e, depois, em "Localizar...".

Uma janela de seleção de arquivos será aberta. Vamos navegar até "alura_space > .venv > Scripts", selecionar o arquivo python.exe e clicar no botão "Selecionar Interpretador" no canto inferior direito da janela.

Pronto! O interpretador correto foi selecionado.

Essa etapa é muito importante para confirmar que estamos trabalhando com o Python presente na virtualenv. Do contrário, podemos nos deparar com erros no futuro.

Instalando os requirements

Por fim, faremos a instalação dos recursos listados no arquivo requirements.txt. Eles são essenciais para o funcionamento do projeto, o próprio Django consta nessa lista!

No terminal, vamos executar o seguinte comando:

pip install -r requirements.txt

Todos os pacotes serão coletados e, uma vez finalizado esse processo, estaremos prontos para rodar nosso projeto.

Rodando o projeto

No terminal, vamos executar o seguinte comando:

python manage.py runserver

O projeto rodará sem problemas e teremos o seguinte resultado no terminal:

Watching for file changes with StatReloader

Performing system checks...

System check identified no issues (0 silenced).

[DATA ATUAL]

Django version 4.1, using settings 'setup.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

Vamos dar "Ctrl + Clique" sobre o endereço informado no terminal para acessar o projeto Alura Space no navegador.

Interface da página inicial: O plano de fundo é azul escuro. No topo à esquerda, há o logotipo do Alura Space — um planeta com anel em diagonal e uma pequena estrela, seguido das palavra "Alura Space" em letras arredondadas. No topo à direita, há um campo de pesquisa. Na lateral esquerda da página, temos o menu de navegação com as opções "Home", "Mais vistas", "Novas" e "Supreenda-me". No corpo da página, no topo, há um banner com uma imagem do espaço e o texto "A galeria mais completa de fotos do espaço!". Abaixo dela, está escrito "Busque por tags", seguido das tags "Nebulosa", "Estrela", "Galáxia" e "Planeta" em retângulos separados. Abaixo, temos a seção "Navegue pela galeria", seguida de cards dispostos em duas colunas com imagens com temática espacial. Cada imagem tem uma tag no canto direito superior e informações escritas na parte inferior.

No próximo vídeo, começaremos a avançar no desenvolvimento do nosso projeto.

App usuários - Criando nova app

O Alura Space é uma galeria de imagens com temática espacial, um ambiente colaborativo para que várias pessoas possam adicionar fotografias de corpos celestiais.

Atualmente, apenas quem tem acesso ao admin consegue inserir novas imagens, ou seja, pessoas desenvolvedoras e administradoras desse sistema. Precisamos adicionar uma nova funcionalidade para realizar o cadastro e o login de novas pessoas usuárias, para que elas possam inserir imagens também. Portanto, vamos criar outra app no Django.

Nova aplicação no Django

Vamos abrir o VS Code. No painel à esquerda, na estrutura de arquivos do projeto, já temos uma app chamada "galeria". A seguir, vamos criar uma app chamada "usuarios".

Não podemos utilizar o prompt de comando atual, porque ele está sendo usado para manter o servidor no ar, então vamos criar outro. Basta clicar no símbolo de "+" no canto superior direito do terminal ou pressionar "Ctrl + Shift + '".

Para consultar a lista de comandos disponíveis no Django, podemos executar a seguinte linha:

python manage.py help

Vamos usar o comando startapp, seguido do nome da nova app:

python manage.py startapp usuarios

Agora, na estrutura de arquivos, além da aplicação "galeria", também temos a aplicação "usuarios".

Nosso próximo passo é adicionar a nova aplicação ao projeto. Vamos expandir a pasta "setup" (onde se encontra nosso projeto Python) e abrir o arquivo settings.py.

Na pasta "usuarios", há um arquivo chamado apps.py, em que constam as configurações dessa nova aplicação. Logo, é deste arquivo que faremos a importação da referência em settings.py para indicar a nova aplicação.

Em settings.py, vamos adicionar a referência usuarios.apps.UsuariosConfig dentro de INSTALLED_APPS:

# código anterior omitido

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'galeria.apps.GaleriaConfig',
    'usuarios.apps.UsuariosConfig',
]

# código posterior omitido

É uma boa prática fazer a importação, em vez de simplesmente colocar "usuarios", porque em apps.py temos todas as configurações da aplicação. Assim, futuramente podemos mudar as configurações sem causar conflitos no projeto.

Portanto, fizemos a importação e nosso projeto Django já reconhece a nova aplicação.

Boas práticas

A seguir, vamos aplicar algumas boas práticas na aplicação "usuarios". Trata-se de boas práticas que aplicamos em "galeria" anteriormente.

Idealmente, em cada uma de nossas aplicações, teremos um arquivo chamado urls.py. Já criamos esse arquivo na aplicação "galeria", então vamos repetir o processo em "usuarios".

Na pasta "usuarios", vamos criar um arquivo chamado urls.py. Vamos copiar o conteúdo de "galeria > urls.py" e colá-lo em "usuarios > urls.py" para ter uma base:

# usuarios > urls.py

from django.urls import path
from galeria.views import index, imagem, buscar

urlpatterns = [
    path('', index, name='index'),
    path('imagem/<int:foto_id>', imagem, name='imagem'),
    path('buscar', buscar, name='buscar'),
]

Vamos remover os paths, já que ainda não temos nenhum. Mais adiante, pensaremos em que tipos de paths colocaremos nessa aplicação. Também removeremos a importação da segunda linha. Por enquanto, o arquivo "usuarios > urls.py" ficará da seguinte forma:

from django.urls import path

urlpatterns = [

]

Em seguida, vamos abrir o arquivo "setup > urls.py", pois precisamos indicar que temos um novo direcionamento. Vamos incluir o path para urls.py da aplicação "usuarios":

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('galeria.urls')),
    path('', include('usuarios.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Sendo assim, geramos a aplicação "usuarios" e criamos seu respectivo arquivo urls.py, adotando boas práticas de desenvolvimento.

Para finalizar, vamos entender por que optamos por criar uma aplicação "usuarios", em vez de gerar uma nova página.

A divisão em apps fica a critério da pessoa desenvolvedora. Como implementaremos muitas funcionalidades acerca de usuários (como cadastro, login e autenticação), julgamos ser coerente ter duas aplicações distintas. A aplicação "galeria" para focar na inserção de novas fotografias e a aplicação "usuarios" para cuidar de processos relativos às pessoas usuárias.

No próximo vídeo

Na aplicação "usuarios", há um arquivo chamado views.py, no qual constarão todas as views para as páginas da nossa app. A partir do próximo vídeo, começaremos a desenvolver esse arquivo, gerando views que farão referência a cadastro, login e quaisquer outros recursos necessários para manejar relativos a usuários.

Sobre o curso Django: autenticação de formulários e alerta

O curso Django: autenticação de formulários e alerta possui 156 minutos de vídeos, em um total de 44 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Python acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas