视图函数:
class LoginView(APIView):
@login_required
@dispatch
def get(self, request):
return redirect(request.redirect_url)
装饰器:
def login_required(func):
@functools.wraps(func)
def decorator(self, request, *args, **kwargs):
if not request.user.is_staff:
return redirect(settings.LOGIN_URL)
return func(self, request, *args, **kwargs)
return decorator
def dispatch(func):
@functools.wraps(func)
def decorator(self, request, *args, **kwargs):
if is_group_member(self.request, settings.CONSTANTS['MANAGER_GROUP_NAME']) \
or is_group_member(self.request, settings.CONSTANTS['MEMBER_GROUP_NAME']):
request.redirect_url = '/xadmin/recruit/hruser'
elif is_group_member(self.request, settings.CONSTANTS['INTERVIEWER_GROUP_NAME']):
request.redirect_url = '/xadmin/recruit/interview'
else:
request.redirect_url = '/xadmin'
return func(self, request, *args, **kwargs)
return decorator