Byurxafayxvsmrkhiizx
손종국
  • 2016.6.29 22:45
  • 조회수 93
  • 답변수 1
Byurxafayxvsmrkhiizx
손종국
  • 2016.6.29 22:45
  • 조회수 93
  • 답변수 1

RuntimeError at /polls/1 그리고 MultiValueDictKeyError

지지하기의 선택 버튼을 누르면 다음과 같은 에러코드를 볼 수 있었습니다.
url은 http://127.0.0.1:8000/polls/1 입니다.

RuntimeError at /polls/1
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/polls/1/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

아래는 area.html의 form 부분 입니다.

<form action = "/polls/{{poll.id}}/" method = "post">
{% csrf_token %}
<button name="choice" value="{{candidate.id}}">선택</button>
</form>

APPEND_SLASH 문제도 위 코드의 action 부분을 보시면 아시겠지만 문제가 없는 것 같습니다.

만약 slash문제가 해결되었다고 가정하고 url을 http://127.0.0.1:8000/polls/1/로 직접 이동했을 때에는 아래와 같은 에러를 확인할 수 있었습니다.

MultiValueDictKeyError at /polls/1/
"'choice'"

에러 화면에서 아래와 같은 추가 정보도 있었습니다.

During handling of the above exception ('choice'), another exception occurred:
26 def polls(request, poll_id):
27 poll = Poll.objects.get(pk = poll_id)
28 selection = request.POST['choice']

위의 경우 28번줄에 하이라이트 표시가 있었습니다.

  • #장고를 활용한 웹사이트 만들기
  • #여론조사 결과저장

1 답변

  • Byurxafayxvsmrkhiizx
    손종국
    • 2016.6.29 23:09

    여러가지 테스트를 하다보니 갑자기 정상적으로 작동하였습니다.
    원인을 못찾은 상태에서 정상으로 돌아와 버려서 당혹스럽네요 ;;;;

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.