Django 投票赞成反对方法[关闭]

pythonDjango

1个回答

写回答

大土豆J

2025-06-26 21:15

+ 关注

Django
Django

Django 投票赞成/反对方法

Django 是一个用于快速开发 Web 应用程序的流行 Python 框架。在 Django 中,我们可以轻松地创建投票应用程序,允许用户对不同的选项进行投票。本文将介绍如何使用 Django 创建一个简单的投票应用程序,并实现投票的赞成和反对功能。

创建投票应用程序

首先,我们需要创建一个 Django 项目。假设我们的项目名为 "voting_app",我们可以使用以下命令创建一个新的 Django 项目:

$ Django-admin startproject voting_app

接下来,进入项目目录并创建一个新的 Django 应用程序:

$ cd voting_app

$ Python manage.py startapp polls

然后,在项目的根目录中的 settings.py 文件中的 INSTALLED_APPS 部分,将新创建的应用程序添加到列表中:

Python

INSTALLED_APPS = [

...

'polls',

...

]

定义投票模型

Django 中,我们使用模型(Model)来表示数据库中的数据。我们需要定义一个投票模型,以便存储投票相关的信息。在 polls/models.py 文件中,我们可以定义一个名为 Question 的模型来表示投票的问题,以及一个名为 Choice 的模型来表示选项:

Python

from Django.db import models

class Question(models.Model):

question_text = models.CharField(max_length=200)

pub_date = models.DateTimeField('date published')

class Choice(models.Model):

question = models.ForeignKey(Question, on_delete=models.CASCADE)

choice_text = models.CharField(max_length=200)

votes = models.IntegerField(default=0)

在这个模型中,Question 模型有一个问题文本字段和一个发布日期字段。Choice 模型有一个外键字段,将选项与问题关联以及一个选项文本字段和一个投票数字段。

创建投票视图

接下来,我们需要创建视图(View)来处理用户的请求,并显示投票页面。在 polls/views.py 文件中,我们可以定义一个名为 vote 的函数视图:

Python

from Django.shortcuts import render, get_object_or_404

from Django.http import HttpResponseRedirect

from Django.urls import reverse

from .models import Question, Choice

def vote(request, question_id):

question = get_object_or_404(Question, pk=question_id)

try:

selected_choice = question.choice_set.get(pk=request.POST['choice'])

except (KeyError, Choice.DoesNotExist):

return render(request, 'polls/detAIl.html', {

'question': question,

'error_message': "You didn't select a choice.",

})

else:

selected_choice.votes += 1

selected_choice.save()

return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

在这个视图中,我们首先通过传递的问题 ID 从数据库中获取问题对象。然后,我们尝试从 POST 请求中获取用户选择的选项。如果用户没有选择选项,我们将显示一个错误消息。否则,我们将增加选项的投票数,并将其保存到数据库中。最后,我们将用户重定向到投票结果页面。

实现投票赞成/反对功能

要实现投票的赞成/反对功能,我们可以修改投票模型。我们可以为 Choice 模型添加两个额外的字段,分别表示赞成和反对的投票数:

Python

class Choice(models.Model):

question = models.ForeignKey(Question, on_delete=models.CASCADE)

choice_text = models.CharField(max_length=200)

up_votes = models.IntegerField(default=0)

down_votes = models.IntegerField(default=0)

然后,我们需要修改投票视图以处理赞成和反对的投票。我们可以添加两个额外的表单字段,用于用户选择赞成或反对,并更新相应的投票数:

Python

def vote(request, question_id):

question = get_object_or_404(Question, pk=question_id)

try:

selected_choice = question.choice_set.get(pk=request.POST['choice'])

vote_type = request.POST['vote_type']

except (KeyError, Choice.DoesNotExist):

return render(request, 'polls/detAIl.html', {

'question': question,

'error_message': "You didn't select a choice or vote type.",

})

else:

if vote_type == 'up_vote':

selected_choice.up_votes += 1

elif vote_type == 'down_vote':

selected_choice.down_votes += 1

selected_choice.save()

return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))

在这个修改后的视图中,我们首先从 POST 请求中获取用户选择的投票类型。然后,根据投票类型更新相应的投票数字段。

在本文中,我们介绍了如何使用 Django 创建一个投票应用程序,并实现投票的赞成和反对功能。通过定义投票模型和视图,我们可以轻松地实现投票的功能,并根据用户的选择更新相应的投票数。Django 的强大功能使得开发投票应用程序变得简单和高效。

以上是一个简单的 Django 投票赞成/反对方法的示例代码。通过学习和实践这个示例,你可以进一步探索 Django 的其他功能,并根据自己的需求进行定制和扩展。希望本文对你理解 Django 的投票功能有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号