我正在尝试为我的 views.py
文件中的所有视图实现 Django 基本身份验证。虽然我可以在每个视图中添加身份验证代码片段,但将其应用于即将到来的视图并不容易。有没有办法让我的 views.py
中的每个视图都自动检查身份验证?
views.py
def mgmt_home(request):
##############################################################
# This code is repetitive
##############################################################
if request.user.is_anonymous:
return redirect("/login")
##############################################################
test_name = Test.objects.all()[0].test_name
metadata = {
"test_name": test_name,
}
return render(request, "mgmt_home.html", metadata)
有什么办法可以避免在我的所有视图中使用此 repetitive
代码?
答案 0 :(得分:1)
您可以使用 django 身份验证中的“login_required()”装饰器或“LoginRequiredMixin”类。 https://docs.djangoproject.com/en/3.1/topics/auth/default/
答案 1 :(得分:0)
您有两个选择:
您可以将这个 @login_required() 装饰器添加到您的每个视图中,它会在您的用户未登录时自动将用户重定向到登录页面(或您希望将用户发送到的任何页面)。>