Итак, я хорошо знаком с функциями обертывания в views.py. Так что я' мы написали декоратор для перенаправления на REDIRECT_URL по умолчанию, если пользователь находится в системе (своего рода обратный login_required
); он основан на том, как я делал представления в прошлом:
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
Однако я получаю следующую ошибку: объект 'function' не имеет атрибута 'status_code'
, что вызвано средним программным обеспечением, ожидающим HttpResponse. Когда я смотрю на значение для ответа
, я вижу, что это <оболочка функции в 0x2b3a9922a500>
.
Вот как я называю это в urls.py
:
url(r'login/',
not_logged_in(auth_views.login),
{'authentication_form': LoginForm },
),