首页 > 解决方案 > 为什么我没有定义名称“请求”?

问题描述

我正在关注 Django 教程并已达到使用目的return render,目前我的 views.py 看起来像这样:

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

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

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

尝试访问我的主页时出现错误:

views.py", line 9, in home_view
    return render(request, "home.html", {})
NameError: name 'request' is not defined

根据 Django 文档请求,不确定是什么导致了这种情况是上面导入的渲染的一部分。

标签: pythondjango

解决方案


request始终是任何视图的第一个参数。在您看来,您的函数只有*argsand **kwargs,因此request将是args. 最好使request参数显式并使用:

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

由于您可能只将此视图用于没有 URL 模式的 URL 模式,因此您可以省略*argsand **kwargs

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

推荐阅读