【集控總結】django 用於登錄、退出、修改密碼

from django.contrib.auth import authenticate, login, logout
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from django.contrib.auth.decorators import login_required
import logging


logger = logging.getLogger('jikong')



@api_view(['POST', 'DELETE'])
def session(request):
    # 登錄操作
    if request.method == 'POST':
        data = request.data
        username = data.get("username")
        password = data.get("password")
        user = authenticate(username=username, password=password)
        if user is not None:
            # 登錄
            login(request, user)
            return Response(status=status.HTTP_200_OK)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)

    if request.method == 'DELETE':
        logout(request)
        return Response(status=status.HTTP_200_OK)


# 修改密碼接口
@api_view(['GET', 'PUT'])
@login_required
def users(request):
    if request.method == 'GET':
        name = request.user.group.name
        res_dict = {'name': name}
        return Response(data=res_dict, status=status.HTTP_200_OK)

    if request.method == 'PUT':
        user = request.user
        data = request.data
        username = data.get('username')
        password = data.get('password')

        if not all([username, password]):
            return Response(status=status.HTTP_400_BAD_REQUEST)

        user.set_password(password)
        try:
            user.save()
        except Exception as e:
            logger.error(e)
            return Response(status=status.HTTP_400_BAD_REQUEST)
        logout(request)
        return Response(status=status.HTTP_200_OK)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章