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

Django开发计算器报name 'c' is not defined错误解决方案

报错根因

你遇到的name 'c' is not defined错误触发逻辑非常明确:

首次访问页面时浏览器发送的是GET请求,你所有给变量c赋值的代码全写在if request.method=='POST'的分支块内,GET请求根本不会执行这些赋值逻辑。等到后面构造context字典时直接引用c,这个变量根本没被创建,自然抛出未定义的错误。

额外提两个代码里的隐藏问题:

  • 用global c,a,b声明全局变量存计算结果是严重的设计错误:Django服务是进程常驻的,全局变量会被所有访问用户共享,会出现A用户的计算结果显示在B用户页面上的串数据问题,这个场景下完全没必要用全局变量。
  • 除法分支判断除数为0的逻辑int(b) + 0 == 0是无效冗余写法,直接判断int(b) == 0即可。
修复步骤
  • 在POST判断逻辑之前初始化c的默认值(比如设为空字符串),保证GET请求访问时变量已定义
  • 删除全局变量声明,所有计算变量都用视图函数内的局部变量,避免多用户数据串扰
  • 修正冗余的除零判断逻辑

修复后的views.py代码

from django.shortcuts import render
from django.template import loader
from django.http import HttpResponse
# Create your views here.

def indx(request):
    template = loader.get_template('calculator/calc_home.html')
    # 初始化c的默认值,GET请求时默认不显示计算结果
    c = ""

    if request.method=='POST':
        a = request.POST.get('num1')
        b = request.POST.get('num2')
        option = request.POST.get('select_val')

        if not a or not b :
            c = 'please select 2 numbers'
        else:   
            if option == 'add':
                c = int(a) + int(b)
            elif option == 'multiply':
                c = int(a) * int(b) 
            elif option == 'substract':
                c = int(a) - int(b)
            elif option == 'devide':
                # 移除冗余的+0判断
                if int(b) == 0:
                    c = 'infinity'
                else:   
                    c = int(a) / int(b)         
            else:
                c = 'please choose an option'   

    context = {
        'sum': c,
    }

    return HttpResponse(template.render(context, request))

可选体验优化

原HTML里输入框的value属性写死了num_1、num_2字符串,用户打开页面时输入框会直接显示这两个无意义的文本,建议改成空值,用placeholder做输入提示:

<label for="num_1">enter 1st number:</label>
<input type="number" name="num1" placeholder="输入第一个数字"><br>

<label for="num_2">enter 2nd number:</label>
<input type="number" name="num2" placeholder="输入第二个数字"><br>

内容的提问来源于stack exchange,提问作者HARRSH BERMANN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:33:31