[Django] diary 만들어보기 (6) CRUD 구현- Delete
https://www.programmingstory.com/2024/02/django-diary-5-crud-update.html
이전 포스팅에서는 CRUD 중 Update하는 법에 대해서 알아보았다. 오늘은 CRUD 중 마지막 delete 하는 법에 대해 알아보도록 하겠다.
delete를 위해서는 먼저 urls.py에서 delete 부분을 추가해준다.
from django.urls import path
from diary import views
app_name='diary'
urlpatterns = [
path('', views.index, name='index'),
path('create/', views.create, name='create'),
path('<int:id>/', views.show, name='show'),
path('<int:id>/edit', views.edit, name='edit'),
path('<int:id>/update/', views.update, name='update'),
path('<int:id>/delete/', views.delete, name='delete'), # add this line
]
하지만 아직 views.delete가 없으므로 views.py에 delete 함수를 만들어준다.
delete함수는 비교적 간단하다.
def delete(request, id):
post = Post.objects.get(id=id)
post.delete()
return redirect('diary:index')
post 객체에 대해서 delete()를 호출해주고 다시 index url로 돌아가면 되기 때문이다.
따라서 별도의 html 파일도 필요하지 않다! 개인적으로 CRUD 중에 가장 간단하지 않나 싶다.
다만 여기서 삭제할 수 있는 버튼을 만들어주어야 하기 때문에 show.html에 삭제 버튼을 넣어준다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My diary</title>
</head>
<body>
<div>
<a href="{% url 'diary:index' %}">return</a>
<h1>Title: {{ post.title }}</h1>
<h3>Satisfaction: {{ post.satisfaction }}</h3>
<p>Content: {{ post.content }}</p>
<a href="{% url 'diary:edit' id=post.id %}">Edit</a>
<a href="{% url 'diary:delete' id=post.id %}">Delete</a>
</div>
</body>
</html>
앞의 첫 목록에서도 삭제하고 싶다면 index.html 파일에다 링크를 걸어주면 된다.
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>My diary</title>
</head>
<body>
<h1>My Diary page<br>
<a href="/post/create">add</a></h1><br/>
{%for post in posts%}
<div style="border: 2px solid green;">
<a href="/post/{{post.id}}">
<h3> {{post.title}} </h3>
<a href="{% url 'diary:delete' id=post.id %}"> Delete</a>
</a>
<h3> satisfied: {{post.satisfaction}} </h3>
<h3> {{post.content}} </h3>
</div>
{% endfor %}
</body>
</html>
이렇게 구현하면 첫 페이지에서도 delete 버튼이 있고 이를 클릭하면 바로 일기가 삭제가 된다.
이 포스팅을 끝으로 일기 만들기를 완료해보았고 CRUD 모든 기능을 구현했다. 다른 CRU가 궁금한 분들은 이전 포스팅을 통해 확인하면 될 것 같다.