You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django迁移问答应用至新项目后分数显示功能异常求助

分数显示功能失效的排查分析

1. 模板变量未传入上下文

模板里用{{total}}展示分数,但GameplayView的get_context_data方法没有把total或分数相关变量加入context字典,模板拿不到数据,自然显示不了分数。

要修复的话,在get_context_data末尾加:

# 从session取初始化的分数
context['total'] = self.request.session.get('score', 0)
# 如果用户已登录,从UserScores模型取持久化分数
if self.request.user.is_authenticated:
    context['total'] = self.request.user.user_id.score

2. 分数容器默认隐藏

模板中的<div class="total">设置了style="display:none",默认处于隐藏状态。就算变量有值,用户也看不到分数。需要在游戏结束时,用JavaScript把这个容器改为可见:

// 游戏结束时调用此函数显示分数
function showScore() {
    document.querySelector('.total').style.display = 'block';
}

3. 视图未与分数模型关联

UserScores模型用来持久化用户分数,但当前GameplayView只初始化了session里的score,既没把session分数同步到模型,也没从模型读取分数传给模板。如果需要持久化分数,得在视图里处理模型读写:

  • 答对题目时更新分数:
# 示例:答对后更新session和模型分数
self.request.session['score'] += 10
if self.request.user.is_authenticated:
    self.request.user.user_id.score += 10
    self.request.user.user_id.save()

4. 模型关联命名不合理

UserScores里的related_name='user_id'容易和默认的用户ID字段混淆,建议改成更清晰的名称,比如user_score:

class UserScores(AutoOneToOneModel(User, related_name='user_score')):
    score = models.PositiveIntegerField(default=0)

之后在视图里通过self.request.user.user_score.score访问用户分数即可。


内容的提问来源于stack exchange,提问作者ashraf sadik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:35:27