최신글
hyeonga_code
파이선 웹구축_장고_32_투표 참여 본문
반응형
- 투표 참여
- set 자료형 추가, 삭제
1. 투표 정보 넘길 경로 설정 <vote> > 'urls.py'
'urls.py'
=====
1
2
3
4
5
6
7
8
9
10
|
from django.urls import path
from . import views
app_name='vote'
urlpatterns = [
path('index/', views.index, name="index"),
path('detail/<vpk>', views.detail, name='detail'),
path('vote/<vpk>', views.vote, name='vote'),
]
|
cs |
2. 투표 함수 설정 <vote> > 'views.py'
'views.py'
=====
1
2
3
4
5
6
7
8
9
10
11
|
from django.shortcuts import render, redirect
from .models import Topic,Choice
def vote(request, vpk):
tp = Topic.objects.get(id=vpk)
tp.voter.add(request.user)
vpk = request.POST.get('cho')
c.num +=1
#_ 중복투표기능이 됨
c.save()
return redirect('vote:detail', vpk)
|
cs |
>> 중복 투표 할 수 없게 작성
최종 'views.py'
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
from django.shortcuts import render, redirect
from .models import Topic,Choice
def vote(request, vpk):
tp = Topic.objects.get(id=vpk)
if not request.user in tp.voter.all():
#_ 기존에 투표하지 않은 사람이라면
tp.voter.add(request.user)
vpk = request.POST.get('cho')
c = Choice.objects.get(id=vpk)
c.num +=1
c.save()
return redirect('vote:detail', vpk)
def detail(request, vpk):
tp = Topic.objects.get(id=vpk)
ch = tp.choice_set.all()
print(ch)
#_ 선택지 정보 넘겨오기
context = {
'tp' : tp,
'cset' : ch,
}
return render(request, 'vote/detail.html', context)
def index(request):
tp = Topic.objects.all()
context = {
'tp' : tp
}
return render(request, 'vote/index.html', context)
|
cs |
반응형
'Python_Django' 카테고리의 다른 글
파이선 웹구축_장고_33_투표 결과 확인 (0) | 2023.06.25 |
---|---|
파이선 웹구축_장고_기초05_클래스_상속 (0) | 2023.06.24 |
파이선 웹구축_장고_기초04_클래스_생성자 (0) | 2023.06.23 |
파이선 웹구축_장고_31_투표 기능 (0) | 2023.06.23 |
파이선 웹구축_기초03_함수 (0) | 2023.06.22 |