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

实现分页时触发UnboundLocalError报错,求技术协助(Python3.6.4+Django2.0.1)

解决Django分页时遇到的UnboundLocalError问题

嘿,这个错误我之前做Django分页功能的时候也碰到过!UnboundLocalError at /org_list/ local variable 'orgs' referenced before assignment说白了就是你的视图函数里,orgs变量还没被赋值,就被传递给模板调用了。结合你提到的分页场景,我整理了几种常见的问题和修复方案:

最常见的原因:变量只在条件分支里定义

比如你的view.py里可能写了类似这样的代码:

def org_list(request):
    if request.method == 'GET':
        page = request.GET.get('page', 1)
        orgs = Org.objects.all()
        paginator = Paginator(orgs, 10)
        orgs = paginator.get_page(page)
    return render(request, 'org-list.html', {'orgs': orgs})

你看,如果请求方法不是GET(比如不小心发了POST请求),orgs根本就没被定义,直接return的时候自然会报错。

修复办法:在条件分支外面先初始化orgs,确保不管什么情况它都有值:

def org_list(request):
    orgs = Org.objects.all()  # 先给变量一个初始值
    if request.method == 'GET':
        page = request.GET.get('page', 1)
        paginator = Paginator(orgs, 10)
        orgs = paginator.get_page(page)
    return render(request, 'org-list.html', {'orgs': orgs})

另一种可能:搜索/筛选逻辑导致变量遗漏

如果你的分页还结合了搜索功能,可能会出现这种情况:

def org_list(request):
    keyword = request.GET.get('keyword', '')
    if keyword:
        orgs = Org.objects.filter(name__icontains=keyword)
        paginator = Paginator(orgs, 10)
        page = request.GET.get('page', 1)
        orgs = paginator.get_page(page)
    return render(request, 'org-list.html', {'orgs': orgs})

当用户没输入关键词的时候,orgs完全没被定义,自然触发错误。

修复办法:给无筛选条件的情况设置默认值,同时把分页逻辑抽出来避免重复代码:

def org_list(request):
    keyword = request.GET.get('keyword', '')
    # 先处理数据筛选
    if keyword:
        orgs = Org.objects.filter(name__icontains=keyword)
    else:
        orgs = Org.objects.all()  # 无搜索关键词时返回全部数据
    # 统一处理分页
    paginator = Paginator(orgs, 10)
    page = request.GET.get('page', 1)
    orgs = paginator.get_page(page)
    return render(request, 'org-list.html', {'orgs': orgs})

额外的小提示

当然,你也可以在org-list.html里加个简单的容错判断,比如用{% if orgs %}包裹分页相关的代码,但这只是临时的补救措施,核心还是要确保视图里orgs在return语句执行前,不管什么代码路径都已经被赋值了。

你可以先检查下自己的view.py,看看是不是属于上面的某一种情况,应该很快就能解决!

内容的提问来源于stack exchange,提问作者Liu Harry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:07:30