如何在Django python中添加“is\u logged\u in”条件以及另一个if语句?

2024-10-01 09:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的视图.py用于搜索。你知道吗

 @csrf_exempt
    def search(request):
        if request.method == 'POST':
            name = request.POST.get('name')
            loc = request.POST.get('location')
            bussinessName = request.POST.get('bussinessName')
            d = {
                'name': name,
                'loc': loc,
                'bussinessName': bussinessName,

            }
            return render(request, "search.html", d);
        else:
        # do the thing you want to do in GET method

            return render(request,"search.html",{});

我需要添加一个会话来获取id。这就是我获取成功页面id的方式

def success(request):
    if('is_logged_in' in request.session):
        id = request.session['authToken'];
        return render(request,"success.html",{'uid':id});
    else:
        return render(request,"success.html",{});

如何在搜索中添加此会话。我是Django的初学者,对此我没有太多的想法。请帮我安排一个搜索时间。。你知道吗


Tags: nameinidsearchgetreturnifrequest
2条回答

为了检查是否有人登录,我将使用request.user.is_authenticated,它依赖于Django auth框架。你知道吗

签出https://docs.djangoproject.com/en/2.0/topics/auth/default/#limiting-access-to-logged-in-users。你知道吗

为了设置request.user变量,我总是使用一个表单(带有usernamepassword字段)发布到/admin/login/?next={{ request.path }},返回到完全相同的页面,然后登录。你知道吗

登录后,您可以将会话设置为

request.session['authToken'] = id

要检查用户是否登录,只需检查“authToken”是否是请求会话中的密钥。所以这是密码

@csrf_exempt
def search(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        loc = request.POST.get('location')
        bussinessName = request.POST.get('bussinessName')
        d = {
            'name': name,
            'loc': loc,
            'bussinessName': bussinessName,
            'is_logged_in': True if 'authToken' in request.session.keys() else False
        }
        return render(request, "search.html", d);
    else:
    # do the thing you want to do in GET method

        return render(request,"search.html",{});

因此,如果没有为该用户设置会话,“is\u logged\u in”将变为False,否则变为True

相关问题 更多 >