Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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_Authentication_Session_Django Rest Framework - Fatal编程技术网

会话未存储变量-Django

会话未存储变量-Django,django,authentication,session,django-rest-framework,Django,Authentication,Session,Django Rest Framework,我在会话中存储令牌时遇到问题。 我在stackoverflow上找到了一些解决方案,但没有一个有效。 目前,当客户端向/api/login发送POST请求时,我存储用户的令牌 这是我的观点 request.session['token'] = auth.token.key request.session.modified = True 我100%确定auth.token.key不是None,逻辑存储很好 但是当涉及到/api/update(一些示例api)时, 我总是得到None 以下是我

我在会话中存储令牌时遇到问题。
我在stackoverflow上找到了一些解决方案,但没有一个有效。

目前,当客户端向/api/login发送POST请求时,我存储用户的令牌

这是我的观点

request.session['token'] = auth.token.key
request.session.modified = True
  • 我100%确定
    auth.token.key
    不是
    None
    ,逻辑存储很好
但是当涉及到/api/update(一些示例api)时, 我总是得到
None

以下是我如何从会话中获取项目:

print(request.session.get('token'))
**上面的代码总是返回None**

我读了Django的文件。我设置了会话中间件和会话应用程序:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
    'user'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

AUTHENTICATION_BACKENDS = (
        'user.auth.AuthBackend',
        'django.contrib.auth.backends.RemoteUserBackend',
        'django.contrib.auth.backends.ModelBackend',
)
我已经完成了所有迁移。
django\u会话
表存在

编辑:

登录视图:

  • 我有自定义身份验证后端
更新视图(其中我无法获取会话数据):


你能在保存会话时向我们展示函数吗?我更新了问题你能在保存会话时向我们展示函数吗?我更新了问题
@api_view(['POST'])
def login(request):

    # convert json data into dictionary
    data = get_data(request)

    print(request.session.get('token'))

    auth = authenticate(
        email = data['email'],
        password = data['password']
    )

    if auth:
        # store user's token into sesion
        request.session['token'] = auth.token.key
        print(request.session['token'])

        user = UserModelSerializer(auth.user)

        return Response(
            user.data,
            status = status.HTTP_200_OK
        )

    else:

        return Response(
            message("user doestn't exist | incorrect password"),
            status = status.HTTP_403_FORBIDDEN
        )
@api_view(['POST'])
def update(request):
    print(request.session.get('token'))
    return Response("its ok.")