두개의 CRUD구성이 필요하다.
1. 카테고리에 대한 CRUD
2. 맛집에 대한 CRUD(다음페이지)
1. 카테고리에 대한 CRUD
카테고리에 대한 모델 정의
- 하나의 맛집이 하나의 카테고리에 속하는 방법으로 모델 구성 예정(맛집에 대한 CRUD에서 구성예정)
- 따라서 카테고리에 대한 모델은 요소로 "카테고리 이름" 만 필요하다.
카테고리 모델 생성
데이터베이스 설정 작업
python manage.py makemigrations
python manage.py migrate
추가 버튼을 누르면 동작하도록 만드는 로직 구성
url패턴 추가
views.py수정(url에 맞는 함수 생성)
Create_category함수에서 읽어온 카테고리 데이터를 index페이지에 뿌림
모든 Category객체를 읽어오고 content로 넘겨준다.
index.html수정
for 문을 통해 전달받은 카테고리를 출력한다.
결과
cateCreate화면에서도 카테고리가 출력되도록 설정
위와 마찬가지로 모든 카테고리 객체를 가져와 content로 내보낸다.
cateCreate 화면 수정(categoryCreate.html 수정)
삭제 버튼 추가
기본그룹 카테고리는 디폴트로 한다.
- 카테고리가 무조건 1개는 있어야 하는데 모두 삭제 되면 속할 곳이 없어지므로
디비 접속
python manage.py dbshell
select * from shareRes_category;
기본그룹의 아이디는 3임을 확인
categoryCreate.html 수정
기본그룹(3)일 경우에는 삭제버튼이 존재하지 않고
기본그룹이 아닐경우(!=3)에는 삭제버튼이 존재한다.
** Update기능은 맛집 CRUD에서 구현
Delete기능 구현
hidden type으로 설정하여 사용자에게 보이지는 않지만 category.id 값을 부여해줌으로써 삭제시 판별가능하게 한다.
또한 form의 action에 ./delete추가한다.(버튼을 누르면 local:8000/categoryCreate/delete로 가도록)
delete url 추가
다른 url에도 name을 추가해준다.
Delete_category 함수 생성
name이 categoryId인 input태그의 값을 받아온다.
id가 동일한 객체를 찾아서 데이터베이스에서 삭제시켜준다.
categoryCreate페이로 redirect 시켜준다.
카테고리에 대한 CRUD 완료!!
** 다음페이지에서 맛집에 대한 CRUD 구현
'장고(Django)백엔드 > 맛집 공유사이트' 카테고리의 다른 글
2. [장고(Django)_맛집 공유 사이트] URL 및 템플릿 설정 (0) | 2021.06.30 |
---|---|
1. [장고(Django)_맛집 공유 사이트] 프로젝트 및 app 구성 (0) | 2021.06.30 |