프로그래밍/(WEB) DJANGO
<django RestaurantShare PJT> 맛집 상세정보 삭제하기(식당정보 DB DELETE)
테리베리
2020. 12. 27. 20:06
728x90
반응형
1. 요약설명
<<쪽의 그림은 맛집 상세정보를 출력하는 페이지(restaurantDetail.html)이다.
>>쪽의 그림은 맛집 상세정보를 삭제할 수 있는 기능이 추가된 페이지이다.
삭제버튼을 누를 시, Data가 삭제되고, 초기화면(index)로 돌아가는 '삭제기능'을 추가해보자.
2. DB 정보
우선 DB는 아래 models.py를 참고해보면,
from django.db import models
# Create your models here.
class Category(models.Model):
category_name = models.CharField(max_length = 100)
class Restaurant(models.Model):
category = models.ForeignKey(Category, on_delete=models.SET_DEFAULT, default=3)
restaurant_name = models.CharField(max_length = 100)
restaurant_link = models.CharField(max_length = 500)
restaurant_content = models.TextField()
restaurant_keyword = models.CharField(max_length = 50)
1. Category 테이블 : category_name
2. Restaurant 테이블: category(Category 테이블 참조),
restaurant_name,
restaurant_link,
restaurant_content,
restaurant_keyword
로 되어있다.
3. 수행
(1). restaurantDetail.html
<a href ="/" class="resAddBtn btn btn-info" role="button">홈으로</a>
<a href ="./updatePage/{{restaurant.id}}" class="resAddBtn btn btn-danger" role="button"> 수정하기</a>
<form action="./delete" method="POST">{% csrf_token %}
<input type="hidden" id="resId" name="resId" value="{{restaurant.id}}"/>
<input type="submit" class="resAddBtn btn btn-danger" value="삭제하기"/>
</form>
- 삭제할 때 사용할 히든인풋만들기(resId)
- [삭제하기] 버튼 생성
(2). urls.py
from django.urls import path, include
from . import views
urlpatterns = [
path('',views.index, name='index'),
path('restaurantDetail/delete', views.Delete_restaurant, name='resDelete'),
path('restaurantDetail/<str:res_id>', views.restaurantDetail, name='resDetailPage'),
path('restaurantDetail/updatePage/update', views.Update_restaurant, name='resUpdate'),
path('restaurantDetail/updatePage/<str:res_id>', views.restaurantUpdate, name='resUpdatePage'),
path('restaurantCreate/', views.restaurantCreate, name='resCreatePage'),
path('restaurantCreate/create', views.Create_restaurant, name='resCreate'),
path('categoryCreate/', views.categoryCreate, name='cateCreatePage'),
path('categoryCreate/create', views.Create_category, name='cateCreate'),
path('categoryCreate/delete', views.Delete_category, name='cateDelete'),
]
- restaurantDetail/delete path 추가
(3). views.py
def Delete_restaurant(request):
res_id = request.POST['resId']
restaurant = Restaurant.objects.get(id= res_id)
restaurant.delete()
return HttpResponseRedirect(reverse('index'))
- Delete_restaurant 추가(DB삭제)
- 삭제 후 return index
끝
728x90
반응형