from django.shortcuts import render, get_object_or_404
from .models import Question, Choice
from django.http import HttpResponse
import json
from django.views.decorators.csrf import csrf_exempt
# 查选所有问题
@csrf_exempt
def index(request):
question_list = Question.objects.all() # 查询所有的问题
datas = {} # 定义存放问题标题内容的字典
response_data = {} # 定义存放返回信息的字典
if question_list:
for question in question_list:
datas[question.id] = question.question_text
response_data['status'] = '200'
response_data['message'] = 'success'
response_data['data'] = datas
result = json.dumps(response_data) # 将字段转换成json字符串
return HttpResponse(result)
else:
response_data['status'] = '10021'
response_data['message'] = 'null'
response_data['data'] = datas
result = json.dumps(response_data)
return HttpResponse(result)
# 查看某个问题的选项
@csrf_exempt
def detail(request, question_id):
choices = Choice.objects.filter(question_id=question_id) # 通过问题id来查询某个问题的选项
datas = {}
response_data = {}
if choices:
for choice in choices:
datas[choice.id] = choice.choice_text
response_data['status'] = '200'
response_data['message'] = 'success'
response_data['data'] = datas
result = json.dumps(response_data)
return HttpResponse(result)
else:
response_data['status'] = '10021'
response_data['message'] = 'null'
response_data['data'] = datas
result = json.dumps(response_data)
return HttpResponse(result)
# 查看投票结果
@csrf_exempt
def results(request, question_id):
results = Choice.objects.filter(question_id=question_id)
datas = {}
response_data = {}
if results:
for r in results:
datas[r.choice_text] = r.votes # 把某个选项的投票数量取出赋给字典
response_data['status'] = '200'
response_data['message'] = 'success'
response_data['data'] = datas
result = json.dumps(response_data)
return HttpResponse(result)
else:
response_data['status'] = '10021'
response_data['message'] = 'null'
response_data['data'] = datas
result = json.dumps(response_data)
return HttpResponse(result)
# 投票
@csrf_exempt
def votes(request, question_id, index):
p = get_object_or_404(Question, pk=question_id) # 通过关键字问题id来取查询问题对象,如果没有该问题,就返回404
results = Choice.objects.filter(question_id=question_id)
# choice_id = request.POST.get('choice', '')
response_data = {}
if not results:
response_data['status'] = '10021'
response_data['message'] = 'null'
result = json.dumps(response_data)
return HttpResponse(result)
else:
choice_id = results[index].id
try:
selected_choice = p.choice_set.get(pk=choice_id)
except (KeyError, Choice.DoesNotExist):
response_data['status'] = '10022'
response_data['message'] = 'The problem is not the choice id'
result = json.dumps(response_data)
return HttpResponse(result)
else:
selected_choice.votes += 1
selected_choice.save()
response_data['status'] = '200'
response_data['message'] = 'success'
result = json.dumps(response_data)
return HttpResponse(result)
# 投票
@csrf_exempt
def vote(request, question_id):
p = get_object_or_404(Question, pk=question_id) # 通过关键字问题id来取查询问题对象,如果没有该问题,就返回404
# 兼容post和get请求
if request.method == 'POST':
choice_id = request.POST.get('choice', '')
else:
choice_id = request.GET.get('choice', '')
print(request.POST)
print(choice_id)
# return HttpResponse(choice_id)
response_data = {}
if choice_id == '':
response_data['status'] = '10021'
response_data['message'] = 'null'
result = json.dumps(response_data)
return HttpResponse(result)
try:
# selected_choice = Choice.objects.get(pk=choice_id)
selected_choice = p.choice_set.get(pk=choice_id)
except (KeyError, Choice.DoesNotExist):
response_data['status'] = '10022'
response_data['message'] = 'The problem is not the choice id'
result = json.dumps(response_data)
return HttpResponse(result)
else:
selected_choice.votes += 1
selected_choice.save()
response_data['status'] = '200'
response_data['message'] = 'success'
result = json.dumps(response_data)
return HttpResponse(result)
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python的投票系统源码.zip
共33个文件
py:15个
pyc:12个
xml:3个
需积分: 1 3 下载量 162 浏览量
2022-10-30
16:42:54
上传
评论
收藏 24KB ZIP 举报
温馨提示
基于Python的投票系统源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Python的投票系统源码.zip (33个子文件)
polls-master
polls
__pycache__
urls.cpython-310.pyc 939B
settings.cpython-310.pyc 2KB
__init__.cpython-310.pyc 168B
wsgi.cpython-310.pyc 518B
wsgi.py 387B
__init__.py 179B
settings.py 3KB
asgi.py 387B
urls.py 792B
db.sqlite3 140KB
.idea
misc.xml 293B
polls.iml 441B
modules.xml 262B
.gitignore 47B
inspectionProfiles
profiles_settings.xml 174B
poll
models.py 920B
apps.py 140B
__pycache__
urls.cpython-310.pyc 516B
views.cpython-310.pyc 2KB
models.cpython-310.pyc 985B
apps.cpython-310.pyc 393B
admin.cpython-310.pyc 1KB
__init__.cpython-310.pyc 118B
__init__.py 0B
migrations
__pycache__
0001_initial.cpython-310.pyc 986B
__init__.cpython-310.pyc 129B
__init__.py 0B
0001_initial.py 1KB
views.py 5KB
admin.py 733B
tests.py 60B
urls.py 510B
manage.py 661B
共 33 条
- 1
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6834
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功