Django:正确设置登录Cookie

时间:2016-06-29 14:06:08

标签: python django session cookies

我是Django会议的新手,我试图为我的网站制作一个登录cookie。用户在我的网站上通过社交网站注册(在这种情况下是蒸汽),因为我有不同的功能:Index查看,登录,LoginProcess

信息:

Index视图是一个主页(127.0.0.1),Login功能将用户重定向到LoginProcess,在此过程中,我设置了一个Cookie。

request.set_cookie(key='logged', value=True)

request是我的代码中所有3个函数都有的实例,我已将登录密钥设置为True,应由Index函数读取。

索引功能:

def index(request):
    if request.COOKIES.get('logged') == True:
        return HttpResponse("1 - User is logged in")
    else:
        return HttpResponse("0 - User is not logged in)

不幸的是,这会显示语句0(用户未登录),即使我已登录网站,记录密钥的值为None

问题:

Index函数无法检测到logged Cookie中注册LoginProcess个Cookie。

问题:

我也要在cookie中保存用户名,因此系统可以确定应该使用哪些用户数据,我知道这对客户端cookie非常不利,最好的方法是什么?

我怎么能解决这个问题?有没有更好的方法来设置登录cookie?还有其他更好的方法来设置登录会话吗?

所以基本上,我如何在第一个函数中设置cookie并从第二个函数中获取它的值?

注意:身份验证没有问题,我主要关注的是正确设置Cookie。

2 个答案:

答案 0 :(得分:1)

也许我还在读错了,但是无法在请求的cookie上设置值。

'WSGIRequest' object has no attribute 'set_cookie'

但如果我认为你的意思是response.set_cookie(key='logged', value=True)(注意response),那么这对我有用。

# sets the cookie if not set.
print request.COOKIES
if request.COOKIES.get('logged'):
    return HttpResponse("1 - User is logged in")
else:
    response = HttpResponse("0 - User is not logged in")
    response.set_cookie('logged', True)
    return response

答案 1 :(得分:0)

我并不完全确定你的问题,但是如果你想在session_id之外设置一个cookie,那么当用户登录时你也可以使用中间件。也像这里建议的那样:

How to set a login cookie in django?