gpt4 book ai didi

django - Django View 的 @login_required 装饰器的对立面是什么?

转载 作者:行者123 更新时间:2023-12-04 00:45:46 25 4
gpt4 key购买 nike

如果我想确保一个 View 被列为具有公共(public)访问权限,是否有一个与 @public_access 等效的装饰器,它与 @login_required 相反,并明确表示该 View 应该始终可以公开访问?

我想到的一个用例是自动将“@csrf_exempt”添加到所有公共(public) View 中,此外还要在代码中明确表示 View 应该是可公开访问的。

最佳答案

您可以使用 user_passes_test 并添加要求,anonymous_required。这与 login_required 的作用相反,您可以在注册和登录页面上使用 - 用户在登录后仍然看到登录页面有点烦人。
你会这样做:

from django.contrib.auth.decorators import user_passes_test

#Anonymous required
def anonymous_required(function=None, redirect_url=None):

if not redirect_url:
redirect_url = settings.LOGIN_REDIRECT_URL

actual_decorator = user_passes_test(
lambda u: u.is_anonymous,
login_url=redirect_url
)

if function:
return actual_decorator(function)
return actual_decorator


#Application of the Decorator

@anonymous_required
def register(request):
#Your code goes here

关于django - Django View 的 @login_required 装饰器的对立面是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com