运行 用户通过身份验证时的 Django QuerySet
Run a Django QuerySet when user authenticated
我正在寻找以下问题的解决方案:
我有一个主要功能,其中包含多种查询集和 python 代码。在此函数中有许多查询,只有在用户通过身份验证时才必须 运行 。我知道当我在函数之前使用 @login_required
时,我可以对用户进行身份验证,但是我如何在函数内部使用身份验证?
我的示例代码:
def auth(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return render(request, 'project/index.html')
else:
login(request, user)
def dashboard_data(request):
qs1 = MyModel.objects.all()
qs2 = MyModel.objects.all()
qs3 = MyModel.objects.all()
#Lets say I want to run the the following queries when user logged in
qs_logged1 = MyModel.objects.all()
qs_logged2 = MyModel.objects.all()
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
'qs_logged1':qs_logged1,
'qs_logged2':qs_logged2
}
return render(request, 'project/index.html', send_data)
我怎么能运行只有在用户登录时才会出现查询?
def dashboard_data(request):
qs1 = MyModel.objects.all()
qs2 = MyModel.objects.all()
qs3 = MyModel.objects.all()
if request.user.is_authenticated:
qs_logged1 = MyModel.objects.all()
qs_logged2 = MyModel.objects.all()
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
'qs_logged1': qs_logged1,
'qs_logged2': qs_logged2
}
return render(request, 'project/index.html', send_data)
else:
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
}
return render(request, 'project/index.html', send_data)
您可以使用 is_authenticated 来检查用户是否 logged-in
def dashboard_data(request):
if request.user.is_authenticated:
# do something with authenticated user
else:
# do something without authenticated user
return something
同样可以参考this SO post
我正在寻找以下问题的解决方案:
我有一个主要功能,其中包含多种查询集和 python 代码。在此函数中有许多查询,只有在用户通过身份验证时才必须 运行 。我知道当我在函数之前使用 @login_required
时,我可以对用户进行身份验证,但是我如何在函数内部使用身份验证?
我的示例代码:
def auth(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return render(request, 'project/index.html')
else:
login(request, user)
def dashboard_data(request):
qs1 = MyModel.objects.all()
qs2 = MyModel.objects.all()
qs3 = MyModel.objects.all()
#Lets say I want to run the the following queries when user logged in
qs_logged1 = MyModel.objects.all()
qs_logged2 = MyModel.objects.all()
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
'qs_logged1':qs_logged1,
'qs_logged2':qs_logged2
}
return render(request, 'project/index.html', send_data)
我怎么能运行只有在用户登录时才会出现查询?
def dashboard_data(request):
qs1 = MyModel.objects.all()
qs2 = MyModel.objects.all()
qs3 = MyModel.objects.all()
if request.user.is_authenticated:
qs_logged1 = MyModel.objects.all()
qs_logged2 = MyModel.objects.all()
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
'qs_logged1': qs_logged1,
'qs_logged2': qs_logged2
}
return render(request, 'project/index.html', send_data)
else:
send_data = {
'qs1': qs1,
'qs2': qs2,
'qs3': qs3,
}
return render(request, 'project/index.html', send_data)
您可以使用 is_authenticated 来检查用户是否 logged-in
def dashboard_data(request):
if request.user.is_authenticated:
# do something with authenticated user
else:
# do something without authenticated user
return something
同样可以参考this SO post