python-关于django自己写后端API登录接口

# 自己写登陆接口
# POST /authorizations/
class Authorizations(APIView):
    def post(self,request):
        # 1.获取数据并校验(完整性,用户名密码是否正确)
        # 2.生成token并保存
        # 3.返回应答,返回响应数据
        username = request.data.get('username')
        password = request.data.get('password')
        try:
            user = User.objects.filter(username=username)
        except User.DoseNotExist:
            return Response({'message':'用户名错误'},status=status.HTTP_401_UNAUTHORIZED)
        password = User.check_password(password)
        if not password:
            return Response({'message':'密码错误'},status=status.HTTP_401_UNAUTHORIZED)
        # 生成JWT token 固定格式
        from rest_framework_jwt.settings import api_settings

        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

        payload = jwt_payload_handler(user)
        token = jwt_encode_handler(payload)
        # 3.返回应答,返回响应数据
        from .utils import jwt_response_payload_handler

        res_data = jwt_response_payload_handler(token,user,request)
              return Response(res_data)

# 以下是在utils中的定义一个要返回的数据的方法

def jwt_response_payload_handler(token,user=None,request=None):
    return {
        'token':token,
        'user_id':user.id,
        'username':user.username
    }
      

你可能感兴趣的:(python,django)