Python / Django:通过装饰器探索python基础

时间:2014-05-16 18:17:59

标签: python django python-decorators

我正在明确研究以下装饰者

#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

关于这个装饰器和装饰器,我几乎没有几个问题。

  1. 他们如何知道只应用于他们正下方的代码?此外,如果使用尚未定义的参数(脚本中的代码),代码通常会出现错误

  2. * args和** kwargs究竟在做什么?我意识到他们代表参数变量,但为什么你需要两个呢?你会为每个可能的变量需要一个吗?这是如何工作的?

  3. 为什么我们"包装"视图功能?我知道这只是一个名字,但为什么在这种情况下它被称为包装器?这通常是怎么做的?

0 个答案:

没有答案