我是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。
答案 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,那么当用户登录时你也可以使用中间件。也像这里建议的那样: