다음 버튼 누르면 MultiValueDictKeyError at /result/ 페이지가 노출됩니다.
285
작성한 질문수 1
안녕하세요 강사님,
템플릿 적용하기 강의를 따라하다가 중간에 막히는 부분이 있어서 질문 드립니다.
question-1 의 답을 선택하고 다음 버튼을 클릭했는데 하기와 같은 이미지가 노출되는 것을 확인했습니다.

이 부분은 어떤 수강생 분이 올리셔서, 답변 달아주신 것을 확인하며 admin 페이지에서 제가 잘못 넣은 부분이 있는지를 확인하며, 혹시 몰라서 다시 입력한 것들을 삭제하고 재입력했는데도 동일하게 발생을 합니다.
아래는 admin 페이지에서 입력한 질문 및 선택지들이며, 강사님과 동일한 질문지를 하지 않고 인터넷에 돌아다니는 것을 기반으로 작성했습니다. (10개 question에 각각 2개의 선택지로 총 20개 choices)


result view에서 문항수와 디저트 유형 로그를 출력을 했구요.

혹시 몰라서 강사님이 확인해보라는 곳도 스크린샷 첨부드립니다.



혹시 몰라서 코드를 첨부합니다. 강사님과 다른 부분이 있다면 강사님께서는 developer로 쓰신 것을 dessert 로 썼습니다.
form.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE-edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title>디저트 찾기</title>
<link rel = "stylesheet" type = "text/css" href="{% static 'css/reset.css' %}">
<link rel = "stylesheet" type = "text/css" href="{% static 'css/form.css' %}">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<section id="survey">
<div class="wrapper">
<form id="form" action="/result/" method="post">
{% csrf_token %}
{% for question in questions %}
<div class="test">
<div class="question_container">
<h3 class="number">{{ question.number }}/{{ questions.count }}</h3>
<h3 class="question">{{ question.content }}</h3>
</div>
<div class="answer">
{% for choice in question.choice_set.all %}
<div>
<input type="radio"
name="question-{{ question.number }}"
id="choice-{{ choice.pk }}"
value="{{ choice.dessert.pk }}"/>
<label for="choice-{{ choice.pk }}">{{ forloop.counter }}. {{ choice.content }}</label>
</div>
{% endfor %}
</div>
{% if not forloop.first %}
<div class="btn_wrap btn_sort">
{% else %}
<div class="btn_wrap">
{% endif %}
{% if not forloop.first %}
<button class="prev_btn">이전</button>
{% endif %}
{% if not forloop.last %}
<button class="next_btn">다음</button>
{% else %}
<input type="submit" value="제출" class="submit_btn"/>
{% endif %}
</div>
</div>
{% endfor %}
</form>
</div>
</section>
<script type="text/javascript" src="{% static 'js/form.js' %}"></script>
</body>
</html>
답변 기다리겠습니다.
답변 1
0
"제출" 버튼이 아니라 "다음" 버튼을 눌렀는데 result 페이지로 넘어갔다는 얘기는 "다음" 버튼의 submit 기능을 막지 못했다는 얘기입니다.
무슨 얘기인가 하면, <form> 태그 안에 있는 <button> 태그들은 기본적으로 submit 기능을 가집니다. 그래서 버튼을 눌렀을 때, submit 되기를 원치 않으면 preventDefault 함수를 사용해야합니다.
이는 form.js에 작성되어 있습니다.
$(function(){
$('.next_btn').click(function(e){
let divs = $(this).parent().prev().children();
let present_top = $(this).parent().parent()[0].offsetTop;
let inputs = divs.find('input:checked');
if(inputs.length < 1) {
alert('문항이 선택되지 않았습니다.');
return false;
}
e.preventDefault();
scrollDown(present_top);
});
$('.prev_btn').click(function(e){
let present_top = $(this).parent().parent()[0].offsetTop;
e.preventDefault();
scrollUp(present_top);
});
$("#form").submit(function() {
let radios = $('input[type=radio]:checked');
if(radios.length < 10) {
alert("문항이 선택되지 않았습니다.");
return false;
}
return true;
});
$("html, body").animate({
scrollTop: 0
}, 500);
});
next_btn과 prev_btn이 click 됐을 때 콜백 함수를 보면 e.preventDefault() 가 그 역할을 수행합니다.
이 부분이 잘 작성되어 있는지 확인 하시고, 이미 잘 작성되어 있는데도 submit이 일어난다면 캐시를 비워주세요.
"캐시 비우기 및 강력 새로고침"은 F12로 개발자 도구를 연 상태에서 새로고침 버튼을 우클릭하면 보일 것 입니다.
0
확인을 해보니 그 건에 대해서는 구현이 되어 있었습니다.
PC와 아이폰XR의 경우에는 동일한 에러가 나오는데 아이폰11pro에서는 다음 페이지로 넘어가고 있네요.
이게 해상도 차이점이 있나요?
data.json 파일을 어디 올려놓은 건가요??
0
143
1
python manage.py dumpdata main --output data.json로 생성된 파일의 글자가 깨짐 문제
0
147
1
현재는 구름 ide 컨테이너 생성이 유료인가요? 시간당 크레딧이 필요합니다.
0
249
1
사이트 접속이 안돼요
0
231
1
첫화면 버튼이 css 적용이 안됩니다..
0
491
1
제출버튼 클릭하면 오류 발생
0
230
1
makemygrations 오류
0
243
1
자바스크립트 오류 관련해서 질문합니다.
0
679
1
장고 ORM 깃허브 업로드 관련 질문입니다.
0
417
1
결과 페이지 만들기 -js편 execCommand를 더이상 지원하지 않습니다.
0
1545
1
결과페이지 만들기 - css 강의 내 질문입니다.
0
297
0
테스트 사용자 이름을 결과페이지에 뜨게
0
272
0
js) 2/3 -> 3/3으로 안 넘어갑니다
0
321
1
질문지를 블록형태로 바꿀려면 어떻게 입력해야하나요??
0
253
1
제출 클릭 시 result로 못넘어가는 오류
0
346
1
구름 컨테이너 선택시 파이썬->장고 선택하면?
0
294
1
static.zip 링크가 없습니다!
0
242
1
display: flex 오류
0
573
0
안넘어가요.
1
345
1
다른 방식으로 구현하는 부분에 대한 질문입니다.
0
309
0
문항 클릭시 다음페이지로 넘어가게 할 수 있을까요?
0
595
1
uWSGI 소켓 설정 후에 프로젝트 화면 접근이 안 됩니다.
0
201
0
다 완성하고 배경색을 바꾸려고 하는데요
0
309
1
함수질문
0
250
1





