๐ ๏ธ ํ๋ก์ ํธ ์ํฉ
ํ์ฌ ๋ธ๋ก๊ทธ ํ๋ก์ ํธ๋ ๊ธฐ์กด์ ํ๋์ฝ๋ฉ๋ ๋์
๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ , Post ๋ชจ๋ธ์ ํตํ DB ๊ธฐ๋ฐ์ผ๋ก ์ ํํ๋ ๊ณผ์ ์
๋๋ค.
์ด ๊ณผ์ ์์ ๊ธฐ์กด ๋ก์ง์ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ค๊ฐ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ์๋ชป ๋ค๋ฃจ๊ฒ ๋์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๐ฅ ์ค๋ฅ ์ํฉ
slug ๊ฐ์ผ๋ก ํน์ ํฌ์คํธ๋ฅผ ์ฐพ์ผ๋ ค๋ ์ฝ๋:
all_posts = Post.objects.all()
identified_post = next(post for post in all_posts if post['slug'] == slug)
์ค๋ฅ ๋ฉ์์ง:
TypeError: QuerySet indices must be integers or slices, not str.
โ๏ธ์์ธ
Post.objects.all()์ด ๋ฐํํ๋ QuerySet์ ๋ชจ๋ธ ์ธ์คํด์ค์ ๋ฆฌ์คํธ์
๋๋ค.
๋ชจ๋ธ ์ธ์คํด์ค๋ ๋์
๋๋ฆฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ post['slug']๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ชจ๋ธ์ ํ๋์๋ ์์ฑ์ฒ๋ผ ์ ๊ทผํด์ผ ํฉ๋๋ค. ๋๋ Django์ get_object_or_404()๋ฅผ ํ์ฉํด ๋์ฑ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ ์๋ ์์ต๋๋ค.
1. ์์ฑ ์ ๊ทผ ๋ฐฉ์
identified_post = next(post for post in all_posts if post.slug == slug)
2. get_object_or_404 ์ฌ์ฉ
from django.shortcuts import get_object_or_404
def post_detail(request, slug):
post = get_object_or_404(Post, slug=slug)
return render(request, "blog/post-detail.html", {"post": post})
๐งพ ์์ฝ
๊ตฌ๋ถ ๋ด์ฉ
| ๋ฌธ์ | ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ ๋์ ๋๋ฆฌ์ฒ๋ผ ๋ค๋ฃธ |
| ์์ธ | post['slug']๋ก ์ ๊ทผ |
| ํด๊ฒฐ | post.slug ๋๋ get_object_or_404() ์ฌ์ฉ |