在视图函数django中使用会话时未存储会话
当我从视图调用登录函数时,我想在浏览器会话中存储用户名值。我尝试了request.session语法,但它不起作用,并且没有在会话中存储用户名。我已经通过进入开发者工具控制台确认了这一点 视图功能在视图函数django中使用会话时未存储会话,django,python-3.x,session,django-forms,Django,Python 3.x,Session,Django Forms,当我从视图调用登录函数时,我想在浏览器会话中存储用户名值。我尝试了request.session语法,但它不起作用,并且没有在会话中存储用户名。我已经通过进入开发者工具控制台确认了这一点 视图功能 def login_submit(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('passwo
def login_submit(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
form = AppUserForm(request.POST)
# form['my_field'].value()
if AppUser.objects.filter(username=username, password=password).exists():
request.session['username'] = username //I WANT TO SET THE SESSION HERE
return HttpResponseRedirect('/')
else:
return login(request)
默认情况下,存储在数据库中(如果未提供其他会话引擎)。从文档中:
默认情况下,Django将会话存储在数据库中(使用模型Django.contrib.sessions.models.Session)。它用于存储一个会话的数据。因此,如果关闭窗口/选项卡,会话将过期
因此,如果要检查用户的会话数据,可以查询django.contrib.sessions.models.session
模型
这是模型中存储数据的示例:
{
'_state': <django.db.models.base.ModelState object at 0x7f41e2908cf8>,
'session_key': 'dmi7gfanckowzpikyihlt2a8696tuaka',
'session_data': 'MDNkYTBlYzMxYTMyZWQ4YzMwZTk0ZY4EjTFmNjA5YWRjMTdiMTA1Nzp7Il9hdXRoX3VzZXJfaWQiOiIyIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI3NmQ5Y2I3ZTliNGIzYWExNDc2NmM1OTUxZDBlOWNmZmIxNTUyOGEzIn0=',
'expire_date': datetime.datetime(2020, 2, 10, 17, 20, 29, 768812,
tzinfo=<UTC>)
}
Mozilla Docs on.您提到了“开发者工具控制台”,您指的是“会话存储”吗浏览器中的选项?是的,我只是指这个,但是我如何在django视图函数中使用javascript会话存储通过
getItem
获取值并通过ajax将其传递给django,或者您可以将数据设置为cookie。请您帮我通过ajax将getItem传递给django视图,可能需要一些代码这应该可以工作,首先设置sessionStorage.setItem('name','xyz')
,然后设置$.ajax({'url':'','type':'POST','data':{'name':sessionStorage.getItem('name')})
,这对我来说很有效。确保同时传递csrf令牌。