Terry Very Good

<django RestaurantShare PJT> 맛집 상세정보 삭제하기(식당정보 DB DELETE) 본문

프로그래밍/(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
반응형