【问题标题】:Why does a function in views.py require a request parameter in this case in Django?为什么在这种情况下,views.py 中的函数在 Django 中需要请求参数?
【发布时间】:2020-12-02 19:06:06
【问题描述】:

在 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的函数调用中没有请求输入,那么为什么在编写初始函数时需要请求参数,请求参数是做什么的,这个请求参数在哪里?它的属性是什么?我非常感谢对其品质做出彻底的回应。

【问题讨论】:

    标签: python django django-views django-request


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      简称view function, or view,是一个接受Web请求并返回Web响应的Python函数。所以每个视图都必须接受一个request 参数。

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

      同样来自documentation

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

      HttpRequest 的一个实例。

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

      关键字参数由匹配的任何命名部分组成 提供的路径表达式,被任何参数覆盖 在 django.urls.path() 的可选 kwargs 参数中指定或 django.urls.re_path().

      【讨论】:

      • 如何将表示为“请求”的 Httprequest 对象处理为 Httpresponse 对象输出?我知道请求参数表示一个对象,但是当我没有在上述 ko() 函数中明确编写任何关于请求的代码时,我无法理解如何处理该输入。
      • HttpResponse 是你的函数的责任。该请求只是在这里为您提供信息,以防您需要它来构建您的响应。不使用也没关系。
      猜你喜欢
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 2018-09-08
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      相关资源
      最近更新 更多