未登录的用户由@login_required()
装饰程序重定向到settings.py
中指定的LOGIN_URL
。到现在为止,一直都还不错。但我不想那样。我不想重定向它们,而是想向未登录的用户显示一条错误消息。你知道吗
我原以为这样行得通,但我得到一个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!")
知道我哪里出错了吗?你知道吗
您可以看到
ios_login_required
在需要参数f
的情况下被调用而不需要任何参数。你知道吗因此,可以尝试这样的操作(在
@ios_login_required
之后没有()
):您可以阅读更多关于Python装饰器here和here的信息
此外,
user.is_authenticated
是一个方法,您需要调用它来获得布尔结果。not user.is_authenticated
将始终是False
。你知道吗相关问题 更多 >
编程相关推荐