inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

<M.B.I.T> 테스트 페이지 만들기! with Django

django의 shell과 ORM

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

328

Dasom Kim

작성한 질문수 6

0

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

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

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

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

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

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

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

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

HTML/CSS django javascript

답변 1

0

Hojun Lee

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

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

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

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

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

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

0

Dasom Kim

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

0

Hojun Lee

전에 보내주신 위 사진처럼 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개나 되는데 의도하신게 맞으신지 궁금합니다.

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

0

Dasom Kim

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

0

Dasom Kim

0

Hojun Lee

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

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

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

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

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

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

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

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

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

data.json 파일을 어디 올려놓은 건가요??

0

143

1

python manage.py dumpdata main --output data.json로 생성된 파일의 글자가 깨짐 문제

0

145

1

현재는 구름 ide 컨테이너 생성이 유료인가요? 시간당 크레딧이 필요합니다.

0

248

1

사이트 접속이 안돼요

0

231

1

첫화면 버튼이 css 적용이 안됩니다..

0

491

1

제출버튼 클릭하면 오류 발생

0

229

1

makemygrations 오류

0

243

1

자바스크립트 오류 관련해서 질문합니다.

0

679

1

장고 ORM 깃허브 업로드 관련 질문입니다.

0

417

1

결과 페이지 만들기 -js편 execCommand를 더이상 지원하지 않습니다.

0

1543

1

결과페이지 만들기 - css 강의 내 질문입니다.

0

297

0

테스트 사용자 이름을 결과페이지에 뜨게

0

269

0

js) 2/3 -> 3/3으로 안 넘어갑니다

0

318

1

질문지를 블록형태로 바꿀려면 어떻게 입력해야하나요??

0

252

1

제출 클릭 시 result로 못넘어가는 오류

0

346

1

구름 컨테이너 선택시 파이썬->장고 선택하면?

0

294

1

static.zip 링크가 없습니다!

0

242

1

display: flex 오류

0

571

0

안넘어가요.

1

345

1

다른 방식으로 구현하는 부분에 대한 질문입니다.

0

309

0

문항 클릭시 다음페이지로 넘어가게 할 수 있을까요?

0

592

1

uWSGI 소켓 설정 후에 프로젝트 화면 접근이 안 됩니다.

0

197

0

다 완성하고 배경색을 바꾸려고 하는데요

0

307

1

함수질문

0

246

1