So, I am very familiar with the wrapping functions in views.py. So I wrote a decorator to redirect to REDIRECT_URL by default if the user is logged in (like reverse login_required ); this is based on how I made representations in the past:
def not_logged_in(redirect_url=None, redirect_field_name=REDIRECT_FIELD_NAME): def decorator(view_func, *args, **kwargs): def wrapper(request, *args, **kwargs): if not request.user.is_authenticated(): return view_func(*args, **kwargs) else: redirect_url = (request.REQUEST.get(redirect_field_name, redirect_url) or settings.REDIRECT_URL) return HttpResponseRedirect(redirect_url) return wrapper return decorator
However, I get the following error: 'function' object has no attribute 'status_code' , which is caused by MiddleWare waiting for HttpResponse. When I look at the value for response , I see that it is <function wrapper at 0x2b3a9922a500> .
Here is what I call it in urls.py :
url(r'login/', not_logged_in(auth_views.login), {'authentication_form': LoginForm }, ),
source share