1

我想做这个:

@friendship_required

或者

@friendship_required(request)

谁能帮我把这个简单的功能变成一个装饰器我想我会经常使用它并且觉得把它变成一个装饰器会更好,或者如果在我的设置文件中我可以如何设置return语句?hasattr谢谢

def friendship_checker(request):
    if hasattr(request.user,'friend'):
        pass
    else:
        return HttpResponseRedirect('/access-denied')
4

1 回答 1

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):
    ...
于 2013-02-03T17:28:38.533 回答