145826202469597
dexelop
  • 2016.5.8 23:39
  • 조회수 119
  • 답변수 1
145826202469597
dexelop
  • 2016.5.8 23:39
  • 조회수 119
  • 답변수 1

url 방식이 잘못되어 표시가 되지 않습니다.

현재

http://localhost:8000/elections/areas/미국/elections/polls/1/

이런식으로 보입니다.
제가 의도한 url은
http://localhost:8000/elections/polls/1/

입니다.

urls.py는
```
from django.conf.urls import url
from . import views

urlpatterns = [
url(r'$', views.index),
url(r'areas/(?P.+)/$', views.areas),
url(r'polls/(?P\d+)/$', views.polls),
]
```

이며

views.py는
```
def polls(request, poll_id):
poll = Poll.objects.get(pk=poll_id)
selection = request.POST['choice']

try:
    choice = Choice.objects.get(poll_id=poll_id, candidate_id=selection)
    choice.votes += 1
    choice.save()

except:
    choice = Choice(poll_id=poll_id, candidate_id=selection, votes=1)
    choice.save()

return HttpResponse("finish")
입니다.

추가적으로

project urls.py는

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r'admin/', admin.site.urls),
url(r'elections/', include('elections.urls')),
]
```
html 부분은

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

이상입니다.

덧. 마크다운이 좀 이상하게 적용 되는 것 같습니다.(스택에디트에서는 제대로 코드 나오는 것을 확인 했습니다)

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

1 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.5.9 12:30

    html에 <form action = "elections/polls/{{poll.id}}/" method="post"> 를 수정해주셔야 합니다.

    시작 부분에 /가 있어야 root path로 인식됩니다. 이렇게 /를 추가해주세요
    <form action = "/elections/polls/{{poll.id}}/" method="post">

답변 쓰기

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