투표 결과를 DB에 저장

웹사이트에서 결과를 전달

  • action : 선택 결과가 전달될 url을 지정합니다.
  • value : 전달할 값을 지정합니다
<!-- C:\Code\mysite\templates\elections\area.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <title>{{area}}</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>지역구</h1>
<br>
{% if poll %}
    <table class="table table-striped">
        <thead>
        <tr>
            <td><B>이름</B></td>
            <td><B>소개</B></td>
            <td><B>기호</B></td>
            <td><B>지지하기</B></td>
        </tr>
        </thead>
        <tbody>
        {% for candidate in candidates %}
        <tr>
            <td> {{candidate.name}}</td>
            <td> {{candidate.introduction}}</td>
            <td> 기호{{candidate.party_number}}번 </td>
            <td>
                <form action = "/polls/{{poll.id}}/" method = "post">
                {% csrf_token %}
                    <button name="choice" value="{{candidate.id}}">선택</button>
                </form>
            </td>
        </tr>
        {% endfor %}
        <tbody>
    </table>
{% else %}
여론조사가 없습니다
{% endif %}
</div>
</body>

action에서 지정한 url을 등록

# C:\Code\mysite\elections\urls.py

# 코드 유지

urlpatterns = [
    # 기존 url 유지
    url(r'^polls/(?P<poll_id>\d+)/$', views.polls), #이 url에 대한 요청을 views.polls가 처리하게 만듭니다.
]

view.polls를 구현

# C:\Code\mysite\elections\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:
        #최초로 투표하는 경우, DB에 저장된 Choice객체가 없기 때문에 Choice를 새로 생성합니다
        choice = Choice(poll_id = poll.id, candidate_id = selection, votes = 1)
        choice.save()

    return HttpResponse("finish")

  • 마이그레이션 꼭하세요..
    sprumin
    2017.9.11 16:56
    0
  • OperationalError at /polls/1/
    배민성
    2017.9.7 19:03
    0
  • 유니코드 에러.. 리눅스 기반에서 해결법도 똑같나요?
    이승우
    2017.8.10 17:44
    0
  • TypeError at /polls/1/ 문제
    이민수
    2017.7.24 20:02
    1
  • TemplateSyntaxError at /areas/미국/
    김수정
    2017.5.19 11:36
    1
  • get()함수와 filter()함수의 차이
    윤영식
    2016.9.9 11:51
    0
  • 저도 유니코드 문제네요 ㅜㅜ
    Jo Minho
    2016.8.22 16:35
    2
  • 저는 유니코드 에러가 납니다. 도와주세요 ㅠㅠ
    홍지상
    2016.8.18 16:59
    2
  • csrf_token을 추가했는데도 에러가 사라지지않습니다.
    하현수
    2016.8.11 03:05
    1
  • Choice 에 get() 적용 시 인자에 대한 질문
    조대연
    2016.8.3 15:39
    1
  • get() 함수에 사용되는 파라미터 이름
    이성용
    2016.7.20 21:02
    1
  • save() 함수 호출시 값이 DB에 저장되는 조건이 뭘까요?
    새벽한시
    2016.7.6 01:47
    1
  • RuntimeError at /polls/1 그리고 MultiValueDictKeyError
    Jongkook
    2016.6.29 22:45
    2
  • pk와 id의 차이가 무엇인가요?
    Booseol Shin
    2016.6.26 16:01
    1
  • 오류
    python
    2016.5.28 12:45
    1
  • 와 진짜 어렵네요
    헬로 닥
    2016.5.14 16:16
    2
  • url 방식이 잘못되어 표시가 되지 않습니다.
    Dexelop
    2016.5.8 23:39
    1
  • 재질문합니다.
    UnYeong Jeong
    2016.4.27 21:23
    4
  • 런서버에서 오류가납니다.
    UnYeong Jeong
    2016.4.23 17:20
    7