포스트 상세 페이지 추가하기
Posted on 2021-08-25 by GKSRUDTN99
Django로 웹사이트 만들기
장고
테스트 코드 수정하기
post 레코드는 setUp()
에서 생성하므로 그에 맞게 test_post_detail
을 수정한다.
또한, category_card_test
를 추가한다.
# blog/tests.py
def test_post_detail(self):
self.assertEqual(self.post_001.get_absolute_url(), '/blog/1/')
response = self.client.get(self.post_001.get_absolute_url())
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content, 'html.parser')
self.navbar_test(soup)
self.category_card_test(soup)
self.assertIn(self.post_001.title, soup.title.text)
main_area = soup.find('div', id='main-area')
post_area = main_area.find('div', id='post-area')
self.assertIn(self.post_001.title, post_area.text)
self.assertIn(self.post_001.category.name, post_area.text)
self.assertIn(self.post_001.author.username.upper(), post_area.text)
main_area = soup.find('div', id='main-area')
self.assertIn(self.post_001.content, post_area.text)
get_context_data() 메서드로 category 관련 인자 넘기기
# blog/views.py
class PostDetail(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data()
context['categories'] = Category.objects.all()
context['no_category_post_count'] = Post.objects.filter(category=None)
return context
post_detail.html에서 category를 표시하도록 수정하기
<!-- blog/templates/blog/post_detail.html -->
<!-- Post meta content-->
<div class="text-muted fst-italic mb-2">Posted on {{ post.created_at }} by {{ post.author | upper }}</div>
{% if post.category %}
<span class="badge bg-secondary float-end">{{ post.category }}</span>
{% else %}
<span class="badge bg-secondary float-end">미분류</span>
{% endif %}