用户通过身份验证时运行Django QuerySet

时间:2018-03-27 06:53:32

标签: python django authentication django-authentication

我正在寻找以下问题的解决方案:

我有一个main函数,它包含许多种QuerySets和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)

我怎样才能在用户登录时运行查询?

2 个答案:

答案 0 :(得分:1)

removedfile: function (file) {
    file.previewElement.remove();
}

答案 1 :(得分:1)

您可以使用is_authenticated检查用户是否已登录

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获取相同的