Delete(삭제)
- CRUD 에서 가장 단순한 기능 구현 작업이다.
Product Model
class Product(models.Model):
description = models.CharField(max_length=100)
price = models.DecimalField(max_digits=9, decimal_places=2)
quantity = models.IntegerField()
def __str__(self):
return self.description
views.py 에서 핸들링
- 해당하는 객체에 접근하여 delete() 메서드로 DB 에서 해당 객체를 삭제한다.
- 지금 삭제 기능은 지극히 기능 구현에만 목적을 두었기 때문에 모든 사람이 다 삭제가 가능하다.
request
에는 user 정보가 있기 때문에request.user.id
로 인증하는 것도 하나의 방법
def product_delete(request, pk):
product = Product.objects.get(pk=pk)
if request.method == 'POST':
product.delete()
return redirect('product:products')
context = {
'product': product,
}
return render(request, 'product/product-delete-confirm.html', context)
템플릿
# product-detail.html 에서 디테일 페이지로 접근
<a href="{% url 'product:delete' product.pk %}">삭제하기</a>
# product-delete-confirm.html
{% extends 'base.html' %}
{% block content %}
<form action="" method="POST">
{% csrf_token %}
<h2>이 댓글을 삭제 하시겠습니까?</h2>
<button type="submit">삭제하기</button>
</form>
{% endblock %}
결론
지금은 단순히 하나의 모델 객체에만 접근했기 때문에 쉽게 구현되지만 ForeignKey 와 같은 관계형 모델이 관여하게 되면 생각보다 복잡한 작업이 된다. 지금 내가 접근하고자 하는 객체
에 포커스를 두어 전체 흐름이 어떻게 돌아가는지도 잊지 말고 생각하자.
'장고 > MTV' 카테고리의 다른 글
list view 구현(multiple queryset list view) (0) | 2019.05.16 |
---|---|
장고 한줄 정리 (0) | 2019.05.15 |
장고 CRUD 기능 구현(3) Update (0) | 2019.05.07 |
장고 CRUD 기능 구현(2) Read (0) | 2019.05.07 |
장고 CRUD 기능 구현(1) Create (0) | 2019.05.07 |