2012-11-01 2 views
2

나는 Django tutorial (part 4)에 있으며 사용자가 설문 조사에 대한 답변을 선택할 수있는 양식을 만들려고합니다.장고 자습서에서 양식 제출이 실패하는 경우

{{ poll.question }} 

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} 

<form action="/polls/vote/{{ poll.id }} " method="post"> 
{% csrf_token %} 
{% for choice in poll.choice_set.all %} 
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id  }}" /> 
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br /> 
{% endfor %} 
<input type="submit" value="Vote" /> 
</form> 
다음은
Page not found (404) 
Request Method: POST 
Request URL: http://localhost:8000/polls/vote/6 
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order: 
^polls/ ^$ [name='index'] 
^polls/ ^(?P<poll_id>\d+)/$ [name='detail'] 
^polls/ ^(?P<poll_id>\d+)/results/$ [name='results'] 
^polls/ ^(?P<poll_id>\d+)/vote/$ [name='vote'] 
^admin/ 
The current URL, polls/vote/6, didn't match any of these. 

양식을 가지고 detail.html의 코드입니다 : 질문 그러나 나는 다음과 같은 오류가 보여주는 유지 '투표'(즉 옵션을 선택하고 양식을 제출)을 클릭하면, 제대로로드

문제가 라인 <form action="/polls/vote/{{ poll.id }} " method="post">에있는 것으로 의심되지만 해결 방법을 모르겠습니다.

답변

4

변경 URL은 설문 조사 ID와 반전 vote 행동이

+0

오른쪽 위 ... URL과 일치하는 패턴이 잘못되었습니다. –

+1

예 ...이 모든 시간이 발생합니다 :) –

6

/polls/{{poll.id}}/vote/합니다.

귀하의 URL 패턴의 형식은 : 대신 vote/id

^polls/ ^(?P<poll_id>\d+)/vote/$ [name='vote'] 

하지만 양식 액션 포인트. 그 반대 :

<form action="/polls/{{ poll.id }}/vote" method="post"> 

실제로 튜토리얼은 다른 방법을 사용하여 해당 URL을 생성합니다. 그것은 사용하십시오 polls:vote 경로 구성 및 현재의 여론 조사 개체 (poll.id)의 id 주어진 url filter 당신을위한 올바른 URL을 생성

<form action="{% url 'polls:vote' poll.id %}" method="post"> 

.

{% url routename arguments %}을 사용하면 모든 템플릿을 수정하지 않고 나중에 경로를 쉽게 변경할 수 있습니다.

+0

감사 Martijn. 네임 스페이스를 사용하여 시도했지만 작동하지 않는 대신 URL에 하드 코드 된 것입니다. – user1786284

관련 문제