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

Django抑郁检测项目detect_emotion函数问卷score始终为0的问题

Django抑郁检测应用问卷Score始终返回0的排查与修复方案

核心问题定位

问题出在depression_questionnaire与detect_emotion两个视图间的score传递逻辑,或是detect_emotion内部的score初始化/取值错误,导致最终模板渲染时拿到的是初始值0。

分步排查与修复

1. 检查视图间的Score传递机制

  • 确认depression_questionnaire计算完成score后,是否将其存入session并通过重定向传递到detect_emotion:
    # depression_questionnaire 函数中,计算完score后添加
    request.session['questionnaire_score'] = calculated_score
    # 重定向到detect_emotion视图,避免表单重复提交
    return redirect('detect_emotion')
    
  • 在detect_emotion中,优先从session读取已有score,而非直接初始化:
    def detect_emotion(request):
        # 从session读取问卷得分,默认值0(兼容session不存在的情况)
        score = request.session.get('questionnaire_score', 0)
        
        # 此处添加视频情绪检测的分数计算逻辑(如需叠加得分)
        # emotion_score = your_emotion_detection_logic()
        # score += emotion_score
        
        # 可选:使用后清除session中的值,避免重复读取
        if 'questionnaire_score' in request.session:
            del request.session['questionnaire_score']
            
        return render(request, 'result.html', {'score': score})
    

2. 排查detect_emotion中的Score初始化覆盖

  • 检查detect_emotion函数开头是否存在score = 0的硬编码初始化,这会直接覆盖外部传递的score值,删除该代码或替换为从session/参数读取的逻辑。

3. 验证表单数据处理逻辑

  • 如果detect_emotion中需要重新处理问卷表单数据,确保表单验证通过后才计算score:
    def detect_emotion(request):
        score = 0
        if request.method == 'POST':
            form = DepressionQuestionnaireForm(request.POST)
            if form.is_valid():
                # 正确计算问卷得分
                score = sum(form.cleaned_data.values())
        else:
            # 从session读取之前的得分
            score = request.session.get('questionnaire_score', 0)
        return render(request, 'result.html', {'score': score})
    

4. 检查模板渲染的变量名匹配

  • 打开result.html,确认渲染的变量名与视图传递的上下文变量完全一致:
    <!-- 确保变量名与视图中传递的score完全匹配 -->
    <p>问卷检测得分:{{ score }}</p>
    

内容的提问来源于stack exchange,提问作者Jubair KP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:30:18