Server/django

[Django] 장고 기초 - pk, path converter, get_object_or_404란?

또잉코딩 2019. 12. 28. 23:28

path-converter란?

장고에서 여러 객체들을 다루는 계층적 url이 필요할 경우에 사용하며, <type:name>와 같은 모양입니다. 지정한 converter type의 name변수를 view 함수로 넘기라는 의미입니다.

 

제가 가져온 코드를 설명하자면,

블로그 글들이 생성될 때마다 각 블로그에 해당하는 'blog/1', 'blog/2'와 같은 url과 view들을 만드는 것은 매우 비효율적이며 그렇게 할 수도 없습니다. 따라서, 하나의 코드로 url과 view를 다루어야 합니다.

<int:blog_id>를 path-converter로 하여 detail 함수에 넘겨준다는 의미입니다.

 

pk(primary key)란?

model에서 찍어낸 수많은 객체들을 구분할 수 있는 구분자라고 할 수 있습니다.

 

여기서는 blog_id가 pk값이 됩니다.

get_object_or_404란?

위 코드에서 계속해서 설명을 하자면,

path-converter로부터 넘겨 받은 blog_id를 받아 Blog객체(model에서 정의된)들 중 pk값이 blog_id인 것이 있으면 가져오고 그렇지 않으면 404 에러를 발생시켜라 라는 의미입니다.

따라서 객체를 가져오기도 하고, 에러메세지를 보내는 역할도 합니다.

 

cf. detail로 넘겨 줄 때는 해당 블로그의 아이디(blog.id)를 함께 넘겨주어야 합니다.