为什么视图函数在 Django 中需要请求参数?

Mic*_*aum 5 python django

Django 文档中的示例:

def index(request):
    return HttpResponse('<h1>hellworld!</h1>')

def detail(request, question_id):
    return HttpResponse("Question: %s" % question_id)
Run Code Online (Sandbox Code Playgroud)

由于request从不使用该参数,为什么要在每个函数签名中包含它?

det*_*hos 6

Web 服务器的目的是回复 HTTP 请求(简单来说)。Django 作为一个 Web 框架,根据收到的请求生成响应。

处理请求的业务逻辑是由 Django Views 完成的,这就是它们的目的。这就是 Django 将请求提供给视图函数的原因,因此代码可以访问请求数据并选择应该采取哪些操作以及应该发回哪个响应(即使特定视图不使用它)。

要求视图接收请求作为参数的决定是 Django 开发人员做出的实现决定,使其成为视图与“系统”其余部分的接口的一部分。其他框架可能会选择使其在全球范围内可用,而不是直接将其提供给视图/控制器,但一种或另一种方法的优点是其他讨论。