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

为什么Django视图调用render时报错name 'request' is not defined

问题原因

  • 你对render方法的参数逻辑存在误解:render方法所需的request参数不是导入render模块时自带的,是Django路由匹配到对应视图函数时,主动传递给视图函数的第一个位置参数,你需要先在视图函数的参数定义中接收这个参数,才能在函数内部调用。
  • 你当前的home_view只定义了*args, **kwargs来接收参数,没有将第一个位置参数命名为request,所以函数内部找不到request变量,触发NameError。

修复方法

推荐使用Django视图的标准写法,显式将第一个参数声明为request:

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def construction_view(request, *args, **kwargs):
    return HttpResponse("<h1> This site is currently being constructed. Please check back later </h1>")

def home_view(request, *args, **kwargs):
    return render(request, "home.html", {})

如果你确实需要保留*args的写法不做显式声明,可以从args中取出第一个参数作为request对象(不推荐,可读性差):

def home_view(*args, **kwargs):
    request = args[0]
    return render(request, "home.html", {})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:04