构建自己的
login_required装饰器,并将其标记为已装饰功能-标记它的最佳位置可能是在
func_dict。
from django.contrib.auth.decorators import login_required as django_l_r# Here you're defining your own decorator called `login_required`# it uses Django's built in `login_required` decoratordef login_required(func): decorated_func = django_l_r(func) decorated_func.func_dict['login_is_required'] = True return decorated_func@login_required # Your decoratordef authenticatedd_view(request): passdef unauthenticated_view(request): pass
现在,您可以检查视图是否已像这样装饰过…
# Assume `a_view` is view function>>> a_view.func_dict.get('login_is_required',False)如果您对Python装饰器感到困惑,请参阅以下SO问题:如何制作功能装饰器链?



