728x90
이전 글에서는 CREATE와 READ에 대해서 Djago에 적용시키며 배워보았다. 이번 글에서는 남은 UPDATE/DELETE에 대해서 알아보자.
목차
1. DELETE
2. UPDATE
3 Admin Site
1. DELETE
# READ 2 (detail page)
- 개별 게시글 상세 페이지 제작
- 모든 게시글마다 view function과 템플릿 파일을 만들 수는 없기 때문에 글의 번호(pk)를 활용하자
urls
우선 URL로 특정 게시글을 조회할 수 있는 번호를 받자. 정수형이기 때문에 <int>를 이용해주었다.
views
view 함수에선 Article.objects.get(pk=pk)에서
1. 오른쪽 pk는 variable routing을 통해 받은 pk
2. 왼쪽 pk는 DB에 저장된 레코드의 id칼럼
templates
url에서 <int:pk>를 이용하여 번호를 받기 때문에 url주소와 함께 article.pk 정보를 함께 넘겨주어야 한다.
또한 게시글을 생성한 후 index 페이지가 아닌 detail페이지로 가기 위하여 redirect인자를 변경해줘 보자!
# DELETE
urls
- 모든 글을 삭제하는 것이 아니라 삭제하고자 하는 특정 글을 조회 후 삭제해야 한다.
views
templates
- detail 페이지에 작성하며 DB에 영향을 끼치므로 POST method 사용
2. UPDATE
- 수정은 CREATE 로직과 마찬가지로 2개의 view 함수가 필요하다.
- 사용자의 입력을 받을 페이지를 렌더링하는 함수 1개
- "edit" view function
- 사용자가 입력한 데이터를 전송받아 DB에 저장하는 함수 1개
- "update" view function
- 사용자의 입력을 받을 페이지를 렌더링하는 함수 1개
edit : urls & views
특정 글을 수정하므로 마찬가지로 <int:pk>를 받아준다.
edit : templates
- 또한 수정을 처음부터 하는 것이 아닌 기존의 값에서 진행한다.
- 따라서 html 태그의 value 속성을 사용하여 기존에 입력되어 있던 데이터를 출력
- Edit 페이지로 이동하기 위한 하이퍼 링크를 detail page에 작성해준다.
- 이후 Update를 위한 로직을 단계에 맞게 작성해주자.
여기까지 했다면 홈페이지 하나를 만들며 데이터를 처리하는 단계에 대해서 배웠기 때문에 실습을 해보는 걸 추천한다:)
3. Admin Site
- Django의 가장 강력한 기능 중 하나
- automatic admin interface
- "관리자 페이지"
- 사용자가 아닌 서버의 관리자가 활용하기 위한 페이지
- 모델 class를 admin.py에 등록하고 관리
- 레코드 생성 여부 확인에 매우 유용하며 직접 레코드를 삽입할 수도 있다.
admin 계정 생성
python manage.py createsuperuser
- username과 password를 입력하여 관리자 계정을 생성해준다.
- email은 선택사항이라 입력하지 않고 enter로 넘겨주어도 된다.
- 비밀번호 생성 시 보안상 터미널에 입력되지 않으니 무시하고 입력 이어가도 된다.
admin site 로그인
- 작성하는 app의 url에서 app name 대신 admin을 넣어주면 된다
- 예) https://127.0.0.1:8000/
app_name/admin/ 로 접속 후 로그인
- 예) https://127.0.0.1:8000/
- 계정만 만든 경우 Django 관리자 화면에서 모델 클래스는 보이지 않는다.
모델 클래스 등록
- 모델의 record를 보기 위해서는 admin.py에 등록해주어야 한다.
위와 같이 모델 클래스가 생긴 것을 확인할 수 있다.
728x90
'Back-end > Django' 카테고리의 다른 글
[Django] ModelForm (0) | 2022.09.06 |
---|---|
[Django] Form (1) | 2022.09.06 |
[Django] CRUD_with_view_functions1 (0) | 2022.09.05 |
[Django] QuerySet API (0) | 2022.09.04 |
[Django] Model (0) | 2022.09.04 |