https://github.com/django/django/blob/main/django/views/generic/list.py
def post_detail(request: HttpRequest, pk: int) -> HttpResponse:
post = Post.objects.get(pk=pk) #pk라는 필드 지정 (종류) = 실제 값 Pk (즉 pk 번호가 pk(숫자)인 url에 접속해서 해당 데이터를 가져온다.)
return render(request, 'instagram/post_detail.html', {
'post' : post,
})
여기서 pk는 int형으로 들어간다. (urls.py에서 지정해줌)
즉 로직은 url 뒤에 있는 숫자를 pk로 받고 해당 pk(id)를 가진 post를 가져와서 post라는 변수에 저장한다.
그리고 post_detail.html 내용을 표시한다.
<h/2>Author: {{ post.author }}</h/2>
{% if post.photo %}
{% endif %}
{{ post.message}}
post_detail.html를 보면 가져온 post의 작성자를 표시하고
photo url을 가져온다.

이렇게 표시가 된다.

근데 위와 같이 pk=100이고 pk=100인 Post가 없을 때는 DoesNotExist가 생성된다.
def post_detail(request: HttpRequest, pk: int) -> HttpResponse:
post = get_object_or_404(Post, pk=pk)# try: # post = Post.objects.get(pk=pk) #pk라는 필드 지정 (종류) = 실제 값 Pk (즉 pk 번호가 pk(숫자)인 url에 접속해서 해당 데이터를 가져온다.) # except Post.DoesNotExist: # raise Http404 return render(request, 'instagram/post_detail.html', { 'post' : post, })
위 코드를 쓰면 404 에러 처리가 된다.