Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在视图函数django中使用会话时未存储会话_Django_Python 3.x_Session_Django Forms - Fatal编程技术网

在视图函数django中使用会话时未存储会话

在视图函数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

当我从视图调用登录函数时,我想在浏览器会话中存储用户名值。我尝试了request.session语法,但它不起作用,并且没有在会话中存储用户名。我已经通过进入开发者工具控制台确认了这一点

视图功能

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令牌。