在Django中,为什么views.py中的函数在这种情况下需要请求参数?

问题描述

在url.py中,我在urlpatterns主列表中设置了新路径:

path('ko/',views.ko),

我了解到我需要在views.py中编写此函数才能使网页运行:

 def ko(request):
    return HttpResponse("It's a page")

我的问题是,当我将参数保留为空白而不是请求时,为什么函数不起作用?:

def ko():
     return HttpResponse("It's a page")

当我删除请求参数时运行页面输出TypeError:ko()接受0个位置参数,但给出1个。

如果在views.ko的函数调用上没有输入请求,那么编写初始函数时为什么需要请求参数,请求参数在做什么,这个请求参数在哪里?它的属性是什么?我真的很感谢对它的品质做出全面的回应。

解决方法

view function,or view的缩写,是一个Python函数,它接受Web请求并返回Web响应。因此,每个视图都必须接受一个request参数。

request对象包含有关请求的元数据,例如使用的HTTP请求方法,客户端的IP地址等。您可以找到HttpRequest here

的列表>

也来自documentation

一旦其中一种网址格式匹配,Django就会导入并调用 给定的视图,它是Python函数(或基于类的视图)。 视图传递了以下参数

HttpRequest的实例。

如果匹配的URL模式不包含命名组,则匹配 正则表达式中的位置作为位置参数。

关键字参数由与 提供的路径表达式,被任何参数覆盖 在django.urls.path()的可选kwargs参数中指定,或 django.urls.re_path()。

,

每个视图函数都将HttpRequest对象作为其第一个参数,通常将其命名为request