Пользователи, которые не вошли в систему, перенаправлены отделом @login_required()
на номер LOGIN_URL
, указанный в settings.py
. Все идет нормально. Но я не хочу этого. Вместо того, чтобы перенаправлять их, я хочу показать сообщение об ошибке тем, кто не вошел в систему.@login_required() без перенаправления выведенных из системы пользователей
Я думал, что это может сработать, но я получаю TypeError: ios_login_required() takes exactly 1 argument (0 given)
, который я не понимаю. Это декоратор, какой аргумент нужен?
def ios_login_required(f):
def wrapper(request, *args, **kwargs):
if not request.user.is_authenticated:
return HttpResponse("You need to be logged in.")
else:
return f(request, *args, **kwargs)
return wrapper
Вид с декоратор может выглядеть следующим образом:
@ios_login_required()
def amiloggedinornot(request):
return HttpResponse("Congrats, you are logged in!")
Любые идеи, где я пошло не так?
Когда я опускаю круглые скобки, возвращаемое значение всегда '' 'Congrats, вы вошли в систему! "' ' – joschaf
@Jo. Затем устанавливается TypeError. «User.is_authenticated» - это метод, он должен быть вызван: 'if not request.user.is_authenticated():'. – okm
Правильно, я забыл добавить круглые скобки после '' is_authenticated''. Вместе с опущением круглых скобок после '' @ ios_login_required'' работает, как должно, спасибо! Но мне любопытно, почему мне нужно опустить их, когда я называю этот декоратор? Все мои другие декораторы имеют их. Вы знаете? – joschaf