gpt4 book ai didi

python - 在 Django 中定义 View 和 url。为什么不使用括号来调用函数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:38 24 4
gpt4 key购买 nike

我一直在经历《Python速成类》,目前正处于《Django Web应用项目(学习日志)》阶段。有些东西与我已经学到的东西相矛盾......

"""views.py file"""

from django.shortcuts import render

def index(request):
"""The home page for Learning Log."""
return render(request, "learning_logs/index.html")

"""urls.py file"""

from django.urls import path

from . import views

app_name = "learning_logs"
urlpatterns = [
# Home page
path("", views.index, name="index")
]

在上面的代码中,在“urls.py”文件中,views.index 被调用但没有括号。这是为什么?

此外,索引函数有“(请求)”参数,但从未提供参数。我错过了什么吗?

请注意,这段代码工作正常。

最佳答案

因为如果您调用该函数,您将在加载文件时调用该函数,然后这将产生一个TypeError,因为缺少参数 ( 请求).

你在这里不调用 index View ,你传递一个引用到那个 View 。这意味着 Django 存储了对该函数的引用,当发出请求时,它会调用该函数。

在 Python 中,就像许多其他语言一样,函数是“一等公民”。您可以将它们作为参数传递,将它们作为结果返回等。

例如我们可以定义一个函数:

def two():
return 2

def sum_twice(f):
return f() + f()

如果我们随后调用 sum_twice(two),我们将传递对 two 函数的引用作为 sum_twice< 中的 f 参数。这将调用 f 两次并对结果求和。在这里它将因此返回 4。如果我们用 sum_twice(two()) 调用它,那么 f 将是 2,而 f() 因此不会工作(并引发错误)。

关于python - 在 Django 中定义 View 和 url。为什么不使用括号来调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57401856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com