将函数转换为装饰器django

时间:2013-02-03 17:19:27

标签: django django-views

我想这样做:

@friendship_required

@friendship_required(request)

任何人都可以帮我把这个简单的函数变成装饰器吗我想我会经常使用它,觉得最好把它变成装饰器,或者我如何设置return语句if {{ 1}}在我的设置文件中?感谢

hasattr

1 个答案:

答案 0 :(得分:4)

from functools import wraps

def friendship_checker(f):
    @wraps(f)
    def wrapped(request, *args, **kwargs):
        if hasattr(request.user, 'friend'):
            return f(request, *args, **kwargs)
        else:
            return HttpResponseRedirect('/access-denied')

    return wrapped

所以,装饰一个视图:

@friendship_checker
def my_view(request):
    ...