이글은 정리글이 아니다. 지금 게시판을 만들면서 느낀점을 적을 예정이다.
바로 views.py 의 create_comment 함수와 urls.py의 post_detail 의 들고와서 보겠다.
@login_required(login_url='user:login')
def comment_create(request, post_id):
post= get_object_or_404(Post, pk=post_id) #post_id를 이용해서 객체를 가져온다
if request.method == 'POST':
content=request.POST.get('content')
if content == '':
print(post.id)
return redirect('post_detail', post_id=post.user)
user=request.user
print(post)
PostComment.objects.create(
content = content,
user = user,
post = post,
)
# return redirect('post_detail', id = post.id)
context = {'post':post}
return render(request, 'community/post_detail.html', context)
if content == '':
print(post.id)
return redirect('post_detail', post_id=post.user)
path('<int:post_id>/', views.post_detail, name='post_detail')
comment_create 함수를 보면서 무슨 뜻인지 모르는 코드를 따로 빼봤다. 데이터를 전달하는게 가능한건지 어떻게 하는건지 공부해보니 dot notation 으로 post의 객체에서 id를 가져온다는 뜻이였다.
즉 post_id는 전역변수로 가져온 post객체의 id값을 가지게 되고(post_id=post.user) redirect하는 post_detail 함수 url에 전달해서 '<int:post_id>' 에 전달되며 결국엔 댓글에 내용이 없는데 post를 한다면 다시 post_detail 화면을 보여주려고 했던것이다.
post.id 를 정상적으로 입력했을때
정상적인 댓글을 입력했던 페이지가 그대로 redirect되고(위)
post.content 를 사용했을때는 post.content인 123123123이 url에 추가되었다. (아래)
'TIL' 카테고리의 다른 글
NoReverseMatch | DRF 연습중 에러 (0) | 2022.10.27 |
---|---|
파이썬 복습 | 아침 퀴즈 | 즐겨찾기, 신청하기 구현 (0) | 2022.10.26 |
community 만들기 | create_comment | mysql 이해, 실습 (0) | 2022.10.24 |
WIL | 게시판 만들기 | 프로젝트 끝 | 피드백 (0) | 2022.10.24 |
프로젝트 D-1 | 발표준비 | 이메일 발송오류 | app_name | 오버라이드 (0) | 2022.10.21 |