일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ERD
- 프론트엔드
- 이진 논리 회귀
- API명세
- serializer
- json to db
- CNN
- 팀프로젝트 기획
- 개인페이지
- 북마크한 목록 가져오기
- 백엔드
- test.py
- class view
- docker
- Django
- 장고
- Python
- 와이어프레임
- 댓글쓰기
- 프로필사진 업로드
- python to json
- 머신러닝
- js
- 비밀번호 수정
- DRF
- 다항 논리 회귀
- 댓글지우기
- original set
- 딥러닝
- 팔로우 기능 에러
- Today
- Total
코딩 개발일지
장고(Django) 댓글쓰기/지우기 본문
가장먼저 detail 페이지를 만들어 줄 것이다. (게시글 1개 보기!!!!)
views.py에 detail 함수를 만들어 주고
urls.py에서 path로 연결해 준다!
detail.html도 만들어 준다.
이제 detail 함수를 만져준다. (bucket은 버킷리스트이다ㅋㅋㅋ)
이러면 기본적인 페이지 완성!
이제 댓글에 대한 models.py 정의해준다. 입맛대로 넣고싶은거 넣어주기!!
bucket과 user는 각각 외래키로 가져옴
migrate 과정을 해주면 데이터베이스에 생성이 된다.
detail과 마찬가지로 views.py에 함수 만들어 준다. csrf랑 login_required는 import해준다.ㅇ
views.py를 작성하는데, bucket_id=bucket_id이부분 때문에 반나절 시간을 썼다..
처음에는 저걸 아예 안넣었는데, bucket_id 쪽에서 에러가 계속났다. (이때는 이게 대체 뭔소리야 이랬음)
이것저것 만져보면서 고쳐봤지만, 다른 오류가 계속 발생했다.
그러다가 데이터베이스의 comment table을 봤는데, 그제서야 bucket_id에 값을 넣을 것을 지정해 줘야 하구나 했음.
근데 문제는 [ bucket_id = ] 뒤에 뭘 넣어야 할지 도저히 모르겠음. 다른것처럼 request.??? 이것밖에 생각이 안났음.
그래서 튜터님께 물어보니 그냥 bucket_id=bucket_id 넣으면 된다고 하심. 하고 나니까 너무 간단해 보여서 슬펐음.
댓글 삭제는 쉬웠다. 좀 생각해야 할 것이라면, 매개변수를 request, bucket_id, comment_id 세개를 쓴다.
comment_id 가 생성되고, 그 comment를 지워야하는거니까 어찌보면 당연한...? (근데 처음 작성할땐 몇시간동안 모름)
이렇게 함수를 정의하면, 매개변수를 urlspy에서도 다 써야한다.(다 안쓰니까 에러나던데 정확하진 않음)
그래서 urls.py는 이렇게 썼다.
댓글이 생겼으니까, detail도 comments를 추가해준다.
이제 detail.html 에서 위 기능들을 다 넣어주면 된다.
for 반복문을 써서 댓글들을 보여준다.
반복문 안에 {{ comment.content }}로 댓글들을 보여주고 form으로 삭제기능을 post 해준다.
만약 댓글이 없으면, '아직 댓글이 없습니다.' 가 나온다.
댓글달기 또한 form으로 post 해주면 완성!!
하.지.만..!!!
여기서 또 역대급 고뇌에 빠진다. 다른 글에 들어가면, 해당 글에대한 댓글만 나와야하는데, 전체 댓글이 보이는걸 고쳐줘야했다.
아하!!!! html에서 {% if {{bucket.id}} == 어쩌구 %} 이런식으로 게시글 번호 같으면 나오게 해야겠다^^ 라고 생각함
근데 생각해보니, 이건 껍데기에 불과한 html 고치기 아닌가?? 데이터베이스쪽을 만져줘야겠는걸? 이라는 생각을 몇시간만에 했음.
그러면,,,, views.py의 detail을 고쳐줘야겠군.
comments = Comment.objects.all()
여기서 comment를 전부 다 가져오는게 문제같단 말이지
이걸 어떻게 바꿔야 할까?
bucket table의 pk(id) 랑 comment table의 bucket_id 가 같을 때만 나오면 되잖아. 라는 결론에 다다름.
comments = Comment.objects.get( ????????? )
get으로 뭔가를 가져와야하는데 대체 어떻게 가져오냐고!!!!!!!!!!!!!!!! filter로 bucket_id만 가져올 수 있나? ㄴㄴ
뭔가 if bucket == comment table의 bucket_id :
하면 될것 같은데 도저히 몰라서 튜터님께 도움을 청했다.
결론은 '역참조'를 해야했다. (처음들어보는데 어떻게 함??)
역참조에대한 설명과 자세한 공부는 다음 글에...!!
'AI 본 교육 > AI 6주차' 카테고리의 다른 글
장고(Django) - KPT 회고 / 프로젝트 발표 (0) | 2023.09.16 |
---|---|
제출용 - 장고(Django)기초 - KPT 회고 (7조 사고칠조) (0) | 2023.09.15 |
장고(Django) ERD/API 보완, footer 꾸미기 (0) | 2023.09.14 |
장고(Django) 좋아요/공유하기 기능만들기 (0) | 2023.09.13 |
장고(Django) 역참조 / form.py (0) | 2023.09.12 |