2학기 본격적인 프로젝트를 시작하기 전 다들 django를 상기시킬 겸 github으로 협업하는 것을 익힐 겸 간단한 사이드 프로젝트를 하기로 했다. 하지만 결코 간단하지가 않았다. 사실 그렇게 어려운 건 아닌데 잠깐 쉬는 사이 코딩 지식이 휘발돼서일 것이다. 쉬더라도 매일 매일 조금씩 코드를 쳐보는 것이 좋을 것 같다.
우리는 많은 사람들이 만드는 mbti 테스트와 결이 비슷하게 일종의 테스트 사이트를 만들기로 했다. 여기서 나는 백엔드 파트를 맡아서 테스트 알고리즘을 짜는 부분을 맡았다.
점수 계산은 models.py에 각 질문과 답변들을 등록하고, 각 답변에 점수도 할당하고
checkbox로 답변을 체크하면 value값을 가져와서 views.py에서 총 점수를 계산하여 result.html 페이지에 보내주는 것으로 짰다.
그런데 ..
ㅋㅋ
문제가 생겼는데 점수 합계가 되지 않던 것이었다.
질문과 답변이 나오는 페이지에서 form을 통해 각 답변을 체크하고 button 태그를 통해서 submit해주는 코드를 짰다.
그리고 request.POST.getlist()를 통해서 각 답변의 배점(checkbox의 value)을 담아서 전해줘서 결과 페이지에 뜨게 하려고 했는데 무슨 일인지 모르겠지만 배점이 담기지가 않고 계속 빈 값만 나오는 것이었다.
1. checkbox의 value에 pk? id?값이 없으면 기본적으로 null값이다.
구글링을 해보니 저런 얘기가 있었다. 하지만 다른 사람들이 따로 pk값을 설정해주지 않고서도 value값을 잘 전달해주는 것을 보니 이게 아니어도 상관없을 거란 생각이 들었다.
2. forms.py
checkbox의 value값을 전달하는 데에는 여러 방법이 있겠지만 스택오버플로우에은 forms.py를 통해 많이 하더라 우리는 이를 이용하지 않고 다른 방법으로 하려고 했기에 정 안되면 구조를 다시 뜯어 고쳐서 forms.py로 해봐야겠다는 생각이 들었다.
3. checkbox 기본 개념 페이지 정독...
checkbox를 다루면서 뭔가 잘못된 게 있었나 해서 기본 개념 페이지를 다시 읽었다. 근데 한 가지 걸리는 점이 있었는데
나는 value값들을 submit하기 위해 button 태그를 사용했는데 여기서는 다들 input 태그를 사용했다.
혹시 몰라 input 태그로 수정해봤는데 ..
몇 번을 수정해도 안되던 점수 집계가 되던 것이었다. button은 되고 Input은 왜 되는지 아직 이해하진 못했다만 ... 다음부터는 button 절 대 안 쓴다 ...
어쨌든 어제 밤부터 오늘 하루 종일 이거 고친다고 전전긍긍했는데 이렇게 사소한 걸로 고쳐지는 걸 보니 허탈하면서도
이런 맛에 백엔드 하는가 싶었다 .
아마 이 경험은 앞으로의 개발 과정에 중요한 자양분이 될 것 같고 절대 잊혀지지 않을 것 같다.
'Web > django & python' 카테고리의 다른 글
[Python] 리스트(list) 원소들 문자열(str)로 합치기 (0) | 2022.01.18 |
---|---|
[Python] 딕셔너리(dictionary) 값 추가, 삭제, key 또는 value 불러오기 (0) | 2022.01.18 |
Django - 클래스형 뷰 CBV (Class-Based View) (0) | 2021.07.09 |
API 활용 (0) | 2021.05.25 |
CRUD - Read (0) | 2021.05.19 |