我正在明确研究以下装饰者
#decorators.py
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def auth_check(view_func):
def _wrapped_view_func(request, *args, **kwargs):
if request.user.is_authenticated():
return HttpResponseRedirect(reverse('pets:home'))
return view_func(request, *args, **kwargs)
return _wrapped_view_func
关于这个装饰器和装饰器,我几乎没有几个问题。
他们如何知道只应用于他们正下方的代码?此外,如果使用尚未定义的参数(脚本中的代码),代码通常会出现错误
* args和** kwargs究竟在做什么?我意识到他们代表参数变量,但为什么你需要两个呢?你会为每个可能的变量需要一个吗?这是如何工作的?
为什么我们"包装"视图功能?我知道这只是一个名字,但为什么在这种情况下它被称为包装器?这通常是怎么做的?