• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

강사님 코드 .. 에러 . . 왜 안되는지 찾았습니다. 다른분들도 꼭 보시길

21.04.23 15:30 작성 조회수 219

0

강사님 .. 답변이 없으셔서 제가 다른 백엔드 개발자분께 물어보았습니다

그런데 코드 구조가 ...... 제가 한번이라도 Question 을 수정하면 ..

절대로 실행이 안되는 구조라고 하더군요 ㅠ

템플릿에서는 pk 값을 부르고 

뷰에 있는 포문에서는 1번부터 호출하니까요 .. 

이거 어떻게 하나요 .............. 물론 공부용도로 올리신거겠지만

저는 이런 오류가 발생할지 모르고 ... 질문을 수정했단 말입니다..........

수정코드 올려주실 수 없나요 ......... 

답변 1

답변을 작성해보세요.

0

Dasom Kim님의 의견이 맞습니다.

책의 코드가 잘못 작성되어 있어서 영상의 코드도 따라서 잘못 작성되었습니다.

말씀해준신대로 pk 값은 삭제를 하거나 하면 변하기 때문에 pk 값으로 하면 1부터 순서대로일 것이라는 보장이 없습니다. 그래서 key 에러가 발생합니다. 

그대신 저희가 Question 모델을 작성할 때, 문제의 번호를 저장하는 number 필드를 작성하였습니다. 문제 번호를 1번부터 잘 저장하셨다면 question.number를 사용하여 문제를 해결하실 수 있습니다.

현재 노션 책은 question.number로 수정하였고, 영상에도 수강자분들이 착오가 없도록 수정하겠습니다.

학습에 불편을 드린 점 죄송합니다.

Dasom Kim님의 프로필

Dasom Kim

질문자

2021.04.24

제가 이미 number 로 해봤는데 .... ㅠㅠ 안되던데 혹시 number로 바꾸고 뷰 코드도 바꿔야 하나요? 

전에 보내주신 위 사진처럼 reuslt 뷰함수에서 request.POST 출력 결과를 보여주세요.

이거는 전에 보내주신 출력결과인데 이상한 점이 몇 가지 있습니다.

문항 수가 11개라고 나오시는데 request.POST에는 'question-13' 밖에 들어있지 않습니다.

정상적으로 question.number를 사용했고 각 문제들의 번호를 1부터 11까지 저장하셨고,

적어도 각 문제 별로 최소 1개의 선택지가 존재해야합니다.

그래야 아래의

<input type="radio" name="question-{{ question.number }}" id="choice-{{ choice.pk }}" value="{{ choice.developer.pk }}">

라디오 버튼 태그가 생깁니다.

그렇게 해야 question-1 부터 question-11 까지 모두 키값이 나옵니다.

그리고 개발자 '유형 수'도 몇 개를 추가하신지는 모르겠지만 16개나 되는데 의도하신게 맞으신지 궁금합니다.

관리자 페이지에서 문항, 개발자 유형이 잘 저장되어 있는지 확인해주세요. 이것도 스크린샷 첨부해주시면 도움이 될 것 같습니다.

Dasom Kim님의 프로필

Dasom Kim

질문자

2021.04.24

왜 13부터 출력이 되나면 제가 1부터 11번까지의 문항이 있는데 중간에 실수로 순서를 잘못넣어서 1개를 지우고 다시 만들었더니 번호가 꼬여서11개를 다지우고 새로 적었습니다. 그래서 번호가 13부터 시작되는거죠... 저는 지웠다가 새로 만들어도 번호가 그대로인줄 알고..  유형수도 16개가 맞습니다  mbti 테스트 같은걸 만드려고 해서 이렇게 되었습니다 

Dasom Kim님의 프로필

Dasom Kim

질문자

2021.04.24

pk는 장고가 알아서 순서대로 번호를 매깁니다. 1 ~ 11 까지 만들고 1번을 지운 뒤 만들어도 1이 만들어지는게 아니라 계속 12 ~ 부터 쭉 만들어집니다. 한 번 삭제된 숫자는 다시 사용되지 않습니다.

그러나 number는 학습자 분께서 직접 넣은 값입니다. 학습자 분께서 알아서 수정이 가능합니다.

'question-2'가 없다고 나옵니다. 둘 중 하나 입니다.

첫째, 애초에 2번 question이 없는경우

admin 페이지에서 문제들 중 number가 2번인 문항이 있는지 확인하세요.

둘째는 2 번 문항이 있어도 2번 문항에 해당하는 선택지가 없는 경우입니다.

이렇게 2번 문항에 딸린 선택지가 있어야 합니다.

그래야 만들어진 html에 라디오 태그가 나옵니다.

반드시 form 페이지에서 F12를 눌러서 아래와 같은 개발자 도구를 통해서 원하는 question-{number}의 input 태그들이 다 들어 있는지 확인하세요.