以下是一个使用Django框架实现的简单投票系统的Python源代码示例,供您参考:
models.py 文件:
```
from django.db import models
from django.contrib.auth.models import User
class Poll(models.Model):
question = models.CharField(max_length=255)
pub_date = models.DateTimeField('date published')
end_date = models.DateTimeField('date ended')
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.question
class Choice(models.Model):
poll = models.ForeignKey(Poll, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=255)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
```
views.py 文件:
```
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.utils import timezone
from .models import Poll, Choice
@login_required
def index(request):
latest_poll_list = Poll.objects.filter(
pub_date__lte=timezone.now(),
end_date__gte=timezone.now()
).order_by('-pub_date')[:5]
context = {'latest_poll_list': latest_poll_list}
return render(request, 'polls/index.html', context)
@login_required
def detail(request, poll_id):
poll = get_object_or_404(Poll, pk=poll_id)
return render(request, 'polls/detail.html', {'poll': poll})
@login_required
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,)))
@login_required
def results(request, poll_id):
poll = get_object_or_404(Poll, pk=poll_id)
return render(request, 'polls/results.html', {'poll': poll})
```
urls.py 文件:
```
from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
path('<int:poll_id>/', views.detail, name='detail'),
path('<int:poll_id>/vote/', views.vote, name='vote'),
path('<int:poll_id>/results/', views.results, name='results'),
]
```
以上是一个简单的投票系统的Django Python源代码示例,仅供参考。