오답노트

[Django] View에서 Model 사용하기 본문

Python/Django

[Django] View에서 Model 사용하기

권멋져 2022. 11. 15. 19:41

View에서 Model 사용

모델은 테이블에 등록된 내용을 가져올 수 있는 object라는 객체가 존재한다.

이 object를 통해 view에 테이블 내용을 출력해보자.

 

우선 모델 객체를 반환할 때를 위해 다음과 같이 models.py에서 모델을 수정하자.

 

그리고 테이블에 등록된 항목을 받아오기 위해 views.py에 다음과 같이 함수를 생성하자.

 

이제 views.py에서 생성한 함수를 urls.py에 등록하여 접근할 수 있도록 하자.

 

주소창에 url을 통해 접속해 결과를 확인하자

Path 변수와 get()의 활용

저번 포스트에서 Path 변수를 통해 값을 받아올 수 있었다. 그리고 get()은 objects의 메소드로 테이블에서 id 기준으로 원하는 값만 조회할 수 있다.

 

우선 views.py 에서 Path변수를 받아 get()으로 조회하는 코드를 작성한다.

 

 

그리고 urls.py에서 위 함수를 호출할 수 있도록 연결해준다.

 

위와 같이 연결하고 url로 접속하면 아래와 같은 결과가 나타난다.

예외처리

지금까지는 에러가 발생하지 않는 상황으로만 테스트를 했기 때문에 잘 작동하는 것 처럼 보이지만, 사용자는 내부구조를 잘 알지 않기 때문에 여러가지 돌발상황이 발생할 수 있다.

 

Path 변수로 테이블의 내용을 조회할 때, 테이블에 없는 번호로 조회한다면 어떻게 될까?

 

자비없이 에러가 발생한다. 이런 에러를 개발자가 미리 조치할 수 있는 방법이 있는데, 그중 Http404 혹은 get_object_or_404()이다.

 

Http404

Path 변수로 테이블을 조회하는 함수에 Http404를 적용해보자.

아래와 같이 코드를 변경한다.

 

try-except를 사용해서 모델에서 데이터를 조회하다 DoesNotExist가 발생하면 404 페이지를 띄우도록 처리했다.

결과는 아래와 같다.

get_object_or_404()

위와 같은 결과를 출력하지만 코드를 좀 더 간결하게 줄일 수 있다.

 

 


objects 는 자료형이 queryset이다. 아래 doc을 참고해서 더 많은 메소드를 활용해보자

 

https://docs.djangoproject.com/en/3.0/ref/models/querysets/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

'Python > Django' 카테고리의 다른 글

[Django] 모델 관계 설정  (0) 2022.11.15
[Django] Template  (0) 2022.11.15
[Django] Model 작성하기  (0) 2022.11.15
[Django] View 작성하기  (0) 2022.11.15
[Django] 설치 및 프로젝트 준비  (0) 2022.11.14