在Django中,可以通过以下步骤让用户给自己打分:
以下是一个简单的示例代码:
# models.py
from django.db import models
from django.contrib.auth.models import User
class Rating(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
score = models.IntegerField()
# forms.py
from django import forms
class RatingForm(forms.Form):
score = forms.ChoiceField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5')])
# views.py
from django.shortcuts import render, redirect
from .models import Rating
from .forms import RatingForm
def rate(request):
if not request.user.is_authenticated:
return redirect('login') # 未登录则跳转到登录页面
if request.method == 'POST':
form = RatingForm(request.POST)
if form.is_valid():
score = form.cleaned_data['score']
Rating.objects.create(user=request.user, score=score)
return redirect('rating_result') # 评分成功后跳转到评分结果页面
else:
form = RatingForm()
return render(request, 'rate.html', {'form': form})
def rating_result(request):
average_score = Rating.objects.filter().aggregate(models.Avg('score'))['score__avg']
return render(request, 'rating_result.html', {'average_score': average_score})
在上述示例中,我们创建了一个评分模型Rating
,一个评分表单RatingForm
,以及两个视图函数rate
和rating_result
。用户在rate
视图中提交评分表单后,会将评分数据保存到数据库中,并重定向到rating_result
视图来展示评分结果。
请注意,上述示例仅为演示目的,实际应用中可能需要根据具体需求进行适当的修改和扩展。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库MySQL。您可以通过以下链接了解更多关于腾讯云云服务器和腾讯云数据库MySQL的信息:
领取专属 10元无门槛券
手把手带您无忧上云