Django装饰器将变量传递给视图

时间:2012-12-28 06:41:07

标签: django decorator

我喜欢使用Django装饰器。

我想将一个变量从装饰器传递给views函数。

有可能意味着请帮帮我..

def d(msg='my default message', alt="none"):
    def decorator(func):
        def newfn(request, **kwargs):
            if msg and alt:
               variable = "Read Only"
            return func(request, **kwargs)
        return newfn
    return decorator

我希望变量从装饰器传递到视图。

@d('hai', 'begin')
def company(request):
   print variable
   return ...

任何人都会帮助我。在此先感谢

1 个答案:

答案 0 :(得分:6)

你无法以这种方式操纵范围。

def d(msg='my default message', alt="none"):
    def decorator(func):
        def newfn(request, **kwargs):
            if msg and alt:
               kwargs['variable'] = "Read Only"
            return func(request, **kwargs)
        return newfn
    return decorator

@d('hai', 'begin')
def company(request, variable):
   ...