
Dando sequencia no nosso sistema de cadastro e caso não tenha visto as partes anteriores, segue o link:
Hello world em Python usando Django
Criando um sistema de cadastro com Django – Parte 1
Criando um sistema de cadastro com Django – Parte 2
Criando um sistema de cadastro com Django – Parte 3
No final da parte 3 o nosso sistema já estava cadastrando e visualizando os usuários do banco de dados, vamos agora a parte de edição e exclusão, vamos ver abaixo como vai ficar o nosso post:
1 – Configurar a rota de deleção de usuários.
2 – Vamos incluir os botões de exclusão e edição na nossa view de seleção de usuários.
3 – Vamos configurar a nossa função para deletar o usuário.
4 – Criar a rota de edição.
5 – Criando a pasta e arquivo html da view de edição.
6 – Criar função de edição.
Configurar a rota de deleção de usuários.
No nosso arquivo urls.py a nova rota ficará assim:

Onde no final do path em ‘deletarUsuario/<int:id>’ estamos passando um parametro que vai ser o id do usuário selecionado.
Agora vamos no arquivo views.py e vamos criar a nossa função que vai receber o parametro passado e a deleção do usuário informado.
Não se esqueça de importar as duas novas funções que vamos utilizar get_object_or_404 que vai buscar o usuário no banco e a redirect que vai direcionar após a exclusão.

O id que foi passado pela url vai ser usado para pesquisar o usuário no banco de acordo com sua chave primaria.
Note também que para deletar um usuário, temos que carregar o nosso modelo em uma variável e em seguida usar o metodo delete().
Após criar a função de deleção de usuário, o return esta usando um redirecionamento para a a view de usuários e mostrando a lista atualizada.
Porém ainda não colocamos os links para, vamos fazer isso no arquivo html da view de usuários.
Abra o arquivo html da view usuários e adicione duas novas colunas, uma de edição e a outra de exclusão e coloque os links como mostrado na imagem abaixo:

Onde o href recebe a rota e o id do usuário, conforme cada interação do for o id vai sendo colocado de acordo com cada usuário na linha da tabela.

Passe o cursor do mouse em cima dos links e verifique na barra de status o id correspondente.

Clique no botão e teste a exclusão.
Agora vamos a edição, ja adiantamos o link de edição la no arquivo html da view usuários, vamos então configurar a rota no arquivo urls.py e depois criar a função de edição no arquivo views.py.
Criar a rota de edição.
A rota vai ser identica a rota de exclusão, segue abaixo:

Será recebido o parametro via url e logo em seguida vai ser carregado um formulário identico ao de cadastro contendo as informações.
Criando a pasta e arquivo html da view de edição.
Copie a página de cadastro para o arquivo html da rota de edição (crie a pasta e arquivo html de edição dentro da pasta templates).

Observe que a unica diferença vai ser o value dos inputs, o qual vamos carregar as informações do usuário selecionado.
Criar função de edição.
Dentro do arquivo views.py vamos criar a nossa função de edição, segue código na imagem abaixo:

Colocamos a nossa função logo abaixo da função de deleção.
A primeira parte da função obtem o usuário do banco de acordo com o seu id passado via url, carregamos em uma variável que ficará responsável por incluir essas informações dentro do input do formulário.
O if verifica se a view foi chamada via post, e caso afirmativo ela vai carregar as informações do usuário na variável edit_usuario e em seguida vai recebendo as novas informações via post e no final realiza um save e redireciona para a view de usuários, mostrando a nossa lista atualizada.
Caso não seja chamado via post o else vai carregar a página de edição e a variável que foi alimentada antes do if ficará responsável por levar as informações do usuário que será descarregada nos inputs.
Note que diferentemente do formulário de criação, este formulário não possui um action, pois ele irá enviar as informações para ele mesmo.
Chegamos ao final desta serie onde realizamos um CRUD básico com Django.
Ela serviu para nos dar uma visão geral de como é trabalhar com esse framework, porém existem muito mais funcionalidades a se aprender, continue estudando e até a próxima.