Python装饰器做了什么,它的代码在哪里?

Koz*_*zet 7 python django decorator login-required

可能重复:
了解Python装饰器

Python装饰器做什么?在向方法添加装饰器时,我在哪里可以看到正在运行的代码?

例如,当我@login_required在方法的顶部添加时,是否有任何代码替换该行?这行怎么检查用户会话?

Pau*_*ite 5

当我@login_required在方法顶部添加时,是否有任何代码替换该行?

有点儿。在视图函数之前添加@login_required与执行以下操作具有相同的效果:

def your_view_function(request):
    # Function body

your_view_function = login_required(your_view_function)
Run Code Online (Sandbox Code Playgroud)

有关Python中装饰器的解释,请参见:

因此,装饰器函数接受一个原始函数,并返回一个(可能)调用原始函数的函数,但也执行其他操作。

在 的情况下login_required,我认为它会检查传递给视图函数的请求对象以查看用户是否经过身份验证。