Em nosso artigo anterior, abordamos os fundamentos da configuração de um projeto Django e criamos nosso modelo de exercício , que exibimos no front-end como uma lista. Neste artigo, vamos nos aprofundar na execução de operações CRUD. Para quem não conhece, CRUD significa Criar, Ler, Atualizar e Excluir — essencialmente as quatro ações fundamentais que você pode realizar em seus dados.
Agora que configuramos nossa API na pasta app , simplesmente estenderemos a visualização do índice para lidar com solicitações de criação, atualização e exclusão.
Vamos configurar um formulário que permita aos usuários criar exercícios. Usaremos modelos HTML para essa finalidade mais uma vez. Para começar, crie um novo modelo chamado add_exercise.html na pasta app/templates.
Em seguida, em nosso modelo index.html , incluiremos o modelo add_exercise.html usando o seguinte método:
{% extends "base.html" %} {% block content %}Exercises
{% include 'add_exercise.html' %} ... {% endblock %}
Estamos utilizando a tag include aqui, que promove a capacidade de composição em modelos HTML, tornando nosso código mais fácil de manter e entender. Se você atualizar a página em seu navegador, deverá ver o formulário aparecer na tela.
Em nosso HTML, usamos a tag
Estamos usando a tag
E em nossa visualização de exercícios , faremos as seguintes alterações para diferenciar as solicitações.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
Verificamos o nome do botão e encaminhamos a solicitação para o método de exercício apropriado.
Vamos adicionar um método de classe de atualização ao modelo de exercício em app/models.py.
def update(request): id = request.POST.get('id') title = request.POST.get('title') date = request.POST.get('date') exercise = Exercise.objects.filter(pk=id).update(title=title, date=date) return exercise
Para atualizar uma linha no banco de dados, podemos usar o método de atualização disponível no modelo de exercício. Porém, antes de atualizar, precisamos garantir que estamos atualizando o exercício correto. Para fazer isso, filtramos os exercícios pela chave primária, que é id, e atualizamos apenas aquele exercício específico.
Da mesma forma, adicionaremos um botão de exclusão ao lado de cada exercício no modelo exercicio.html.
Definiremos delete como o valor do atributo name e, em views.py, estenderemos as instruções if...elif para lidar com a operação de exclusão.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST delete = 'delete' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) elif delete == True: models.Exercise.delete(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
E no modelo Exercício, adicionaremos o método de classe delete.
def delete(request): id = request.POST.get('id') is_deleted = Exercise.objects.filter(pk=id).delete() if is_deleted == 1: return True return False
Com esta adição, implementamos com sucesso operações CRUD em nosso aplicativo Python e Django.
from django.http import HttpResponseRedirect def index(request): ... return redirect('/') # or return HttpResponseRedirect(request.META['HTTP_REFERER'])
Em resumo, gerenciando efetivamente nossas solicitações POST e garantindo o redirecionamento adequado, podemos criar uma experiência de usuário perfeita ao implementar operações CRUD em nosso aplicativo Django.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3