简单测试
# 装饰器
def hello(fn):
def wrapper(*args,**kwargs):
print('hello,%s'% fn.__name__)
fn(*args,**kwargs)
print('goodbye,%s' %fn.__name__)
return wrapper
@hello
def foo():
print('i am foo')
foo()
输出结果:
hello,foo
i am foo
goodbye,foo
登录验证场景:
def login(func):
def login_fun(request,*args,**kwargs):
# 判断是否登录
if request.session.has_key('user'):
return func(request,*args,**kwargs)
else:
# 未登录,跳转登录页面
red = HttpResponseRedirect('/user/login/')
# 记录当前访问,登陆后跳转该页面
red.set_cookie('url',request.get_full_path())
return red
return login_fun
完成,就可以在所需接口添加登录验证(如@包名.login)。