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

如何解决Django中‘loader is not defined’报错问题?

解决Django中"loader未定义"及模板渲染报错问题

问题根源

你遇到的NameError: name 'loader' is not defined是因为导入方式和调用方式不匹配:

  • 你写了from django.template.loader import get_template,这是直接导入了get_template函数,而非loader模块,所以不能用loader.get_template()来调用。
  • 代码里还有两个拼写错误,会导致后续渲染失败:
    1. template.rendar() → 正确写法是template.render()
    2. context里的lastest_question_list → 变量名是latest_question_list,键名多了个s,模板引用时会找不到对应数据

两种修正方案

方案1:直接使用已导入的get_template函数

修改index视图函数,直接调用get_template,同时修正拼写错误:

from imp import load_source
from django.shortcuts import render
from django.http import HttpResponse
from .models import Question
from django.template.loader import get_template
from django.template import Template

def index(request):
    latest_question_list = Question.objects.order_by("pub_date")[:5]
    # 直接调用get_template,无需loader前缀
    template = get_template("polls/index.html")
    context = {
        # 修正键名拼写
        "latest_question_list": latest_question_list,
    }
    # 修正render拼写
    return HttpResponse(template.render(context, request))

方案2:导入loader模块

如果想保留loader.get_template()的写法,把导入语句改成导入loader模块:

from imp import load_source
from django.shortcuts import render
from django.http import HttpResponse
from .models import Question
# 改为导入loader模块
from django.template import loader
from django.template import Template

def index(request):
    latest_question_list = Question.objects.order_by("pub_date")[:5]
    template = loader.get_template("polls/index.html")
    context = {
        "latest_question_list": latest_question_list,
    }
    return HttpResponse(template.render(context, request))

额外简化方案

Django推荐用你已导入的render函数简化模板渲染,一行代码即可完成加载与渲染:

def index(request):
    latest_question_list = Question.objects.order_by("pub_date")[:5]
    context = {"latest_question_list": latest_question_list}
    # 自动处理模板加载和渲染
    return render(request, "polls/index.html", context)

内容的提问来源于stack exchange,提问作者Sam McGraw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:00:57