luffy项目中关于APIView的使用
views中
from rest_framework.views import APIView from django.shortcuts import HttpResponse from api.utils.auth_class import LoginAuth from api.models import * from django.core.exceptions import ObjectDoesNotExist from api.utils.response import BaseResponse import json from rest_framework.response import Response from django.http import JsonResponse from api.utils.exceptions import PriceException from django_redis import get_redis_connection class ShoppingCarView(APIView): authentication_classes = [LoginAuth,] response=BaseResponse() conn=get_redis_connection("default")def post(self,request): def post(self,request): """ 购物车的添加课程请求 :param request: :return: """ ..... def get(self,request): """ 查看购物车列表请求 :param request: :return: """ pass
自定义认证 from api.utils.auth_class import LoginAuth,api是自定义组件(相当于app01)
from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from api.models import UserToken class LoginAuth(BaseAuthentication): def authenticate(self, request): #一定要重写该方法 token=request.GET.get("token") token_obj=UserToken.objects.filter(token=token).first() if token_obj: return token_obj.user,token_obj.token else: raise AuthenticationFailed("认证失败了")
自定义异常处理 from api.utils.exceptions import PriceException
class PriceException(Exception): def __init__(self): self.msg="价格策略有问题,你不是人!"
自定义 response from api.utils.response import BaseResponse
class BaseResponse(object): def __init__(self): self.data=None self.error_msg="" self.code=1000 @property def dict(self): return self.__dict__