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

时间:2017-09-23 18:56:19

标签: python django

Django文档示例:

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

def detail(request, question_id):
    return HttpResponse("Question: %s" % question_id)

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

这些只是一些例子。在现实世界中,程序员希望找到请求GET参数,解码JSON POST主体,检查标头,获取用户或会话数据等。

答案 2 :(得分:0)

Django文档中的许多示例(以及任何文档,实际上)都是必然的。它们很简单,因为一个真实例子的复杂性会从正在形成的点上消失。

在实际使用案例中,您经常需要访问request对象。您可能想知道哪个User附加到requestrequest.user),或者请求是GET还是POST({{1} })。

您还可以检查标题(request.method),解码通过request.headers请求(POST)发送的JSON对象等。