django实现用户投票功能
时间: 2023-12-31 22:06:57 浏览: 31
要实现用户投票功能,可以使用Django中的模型和视图来完成。以下是一个简单的例子:
1. 首先,在你的models.py文件中定义投票模型:
```
from django.db import models
from django.contrib.auth.models import User
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question
class Choice(models.Model):
poll = models.ForeignKey(Poll, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
```
在这个例子中,我们定义了一个投票模型,包含问题和发布日期两个字段。还定义了一个选项模型,包含选项文本、投票数和一个外键,指向投票模型。
2. 在你的views.py文件中,定义投票视图:
```
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.urls import reverse
from .models import Poll, Choice
def vote(request, poll_id):
poll = get_object_or_404(Poll, pk=poll_id)
try:
selected_choice = poll.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
return render(request, 'polls/detail.html', {
'poll': poll,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls:results', args=(poll.id,)))
```
在这个例子中,我们定义了一个投票视图,它会接收一个投票ID作为参数。当用户提交投票时,它会从POST请求中获取选择的选项,并将投票数加1,最后重定向到投票结果页面。
3. 最后,在你的urls.py文件中,定义投票URL:
```
from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('<int:poll_id>/vote/', views.vote, name='vote'),
]
```
在这个例子中,我们定义了一个投票URL,包含一个投票ID作为参数,并将其映射到投票视图。
现在,你就可以在你的网站上实现用户投票功能了。