会话未存储变量-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
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.")