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

如何解决Django视图代码中local variable 'fm' referenced before assignment报错

错误原因

你只在POST请求的分支内对fm变量做了赋值,当请求方式为GET(也就是普通页面访问的默认请求方式)时,代码不会进入if Request.method == 'POST'的判断分支,fm变量没有被定义就直接在render中被引用,因此触发该报错。

解决方案

1. 基础修复

给fm设置默认初始值即可,在判断请求方式的代码之前,先给fm赋一个和POST分支返回值类型一致的默认值(通常是空列表,模板渲染时也不需要额外做兼容处理)。

2. 可选优化:异常处理

原代码中直接用Robot.objects.get(pk=id),如果传入的id不存在对应数据,会直接抛出DoesNotExist异常,建议用Django内置的get_object_or_404简化异常处理,匹配不存在时直接返回404页面,更符合Web开发规范。

修改后的代码示例
from django.shortcuts import get_object_or_404

def Robot_History(Request,id):
    # 提前初始化fm默认值
    fm = []
    if Request.method == 'POST':
        pi = get_object_or_404(Robot, pk=id)
        fm = list(jenkinsHistory.objects.values('id','robotName','jenkinsBuildNumber','jenkinsBuildStatus','errorMsg','Param').filter(robotName=pi))
    rob = Robot.objects.all()
    return render(Request, 'hello/robotHistory.html',{'jenkinsHistory': fm,'robot': rob})

内容的提问来源于stack exchange,提问作者Rika Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:45:00