Django的Session基础学习
from django.contrib.auth import authenticate, login
from django.http import JsonResponse
from django.contrib.sessions.models import Session
from django.contrib.auth.models import User
from django.utils import timezone
from datetime import timedelta
from django.contrib.sessions.models import Session
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.models import User
from django.http import JsonResponse
@csrf_exempt
def login_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
sessionid = request.session.session_key
session = Session.objects.get(session_key=sessionid)
request.session.set_expiry(timedelta(minutes=30))
session.save()
return JsonResponse({
'status': 'success',
'message': '登录成功',
'sessionid': sessionid,
'username': user.username,
})
else:
return JsonResponse({
'status': 'fail',
'message': 'username or password fail',
})
return JsonResponse({
'status': 'fail',
'message': 'only support POST method',
})
@csrf_exempt
def get_user_info(request):
sessionid = request.COOKIES.get('sessionid')
if sessionid is None:
return JsonResponse({
'status': 'fail',
'message': '未找到 sessionid',
})
try:
session = Session.objects.get(session_key=sessionid)
if session.expire_date < timezone.now():
return JsonResponse({
'status': 'fail',
'message': 'Session 已过期',
})
user_id = session.get_decoded().get('_auth_user_id')
if not user_id:
return JsonResponse({
'status': 'fail',
'message': '未找到用户信息',
})
user = User.objects.get(id=user_id)
return JsonResponse({
'status': 'success',
'username': user.username,
'password': user.password,
})
except Session.DoesNotExist:
return JsonResponse({
'status': 'fail',
'message': '无效的 sessionid',
})
except User.DoesNotExist:
return JsonResponse({
'status': 'fail',
'message': '用户未找到',
})