[Django/Python] 7. Delete, Url naming

SangHyun-Park·2021년 7월 28일
0

Django

목록 보기
10/12

저번 시간에 등록한 student list 들을 삭제해보자

로직은 다음과 같다
모든 모델 인스턴스들은 각자의 고유한 키(primary key / pk) 를 가지고있는데 해당 키를 통해 원하는 모델 인스턴스에 접근할 수 있다

url


<int:pk> : (해당 공간에 입력된 int형 정보는 view 에 pk 라는 이름으로 전달된다)
<slug:name> ... 등등 다양한 자료형 및 이름의 조합으로 변경가능

위와같이 name 파라미터를 통해 각 url의 별칭이 정해진것을 확인할 수 있는데 이 별칭은 템플릿 태그 혹은 redirection 을 할 때에 유용하게 쓰인다

view

pk를 넘긴 후 view에서는 objects 객체 manager 의 get 을 통해 원하는 모델 인스턴스를 불러오고 delete() 메소드를 통해 삭제를 해준다

절대 production 환경에서는 위와같은 로직은 보안에 매우 취약하기때문에 구사하면 안된다. 우리는 delete 메소드 및 CRUD 기능을 가장 빠르게 눈으로 확인하기위해 다음과같이 진행한다
실제 production 환경일 때에는 여러가지 authentication 검증과정을 거치는 등의 데이터 수정 전 확인 절차가 필요하다

또한 redirect 메소드 내부에서 url 별칭을 이용해 delete 작업이 끝나면 studentList 페이지로 redirection 해준다

기존 student_list.html 파일을 위와같이 수정해주고
{% url 'delete' student.pk %} 에서
url템플릿 태그와, delete url 별칭을 사용한것, student.pk 로 해당 모델 인스턴스의 pk 값을 다음과같이 참조할 수 있다는 것을 확인할 수 있다

모두 완성하면 위와같은 페이지가 나올텐데, 삭제버튼을 누르면 정상적으로 삭제가 되는것을 확인할 수 있다.

profile
https://ppaksang.tistory.com/ 옮겼습니다 !!

0개의 댓글