【发布时间】:2021-10-17 18:04:57
【问题描述】:
def home(request):
# logged in
if request.user.is_authenticated:
request.session['username'] = str(request.user)
request.session.set_expiry(0)
# anonymous
else:
# how could Django get session data here ?
cur = request.session.get('username', None)
if cur:
pass
else:
anon = random.choice(settings.SESSION_NAMES)
request.session['username'] = anon
request.session.set_expiry(42)
res = render(request, 'ex/home.html', {'username': request.session['username']})
return res
我正在尝试了解会话。在上述匿名情况下,我将会话数据“用户名”设置为已获取的请求。在下一个请求中(刷新后),我可以获得会话数据。
但我不明白它是如何工作的。这是一个新请求,我在上一个请求中设置了“用户名”,而不是响应。
我如何从下一个请求对象中获取“用户名”,尽管没有将其设置为上一个响应对象?
【问题讨论】:
-
会话数据存储在网络服务器的数据库中。通常,网络浏览器每次都会在请求中使用
sessionid发出请求,从而链接到存储在数据库中的会话数据。
标签: django session request response