課程接口調試
阿新 • • 發佈:2019-04-09
course stat login .com lse str 修改 app cati
免費課程查看增加修改刪除
1 from rest_framework.response import Response 2 from rest_framework.views import APIView 3 from app import models 4 from utils.commonutils import LuffyResponse 5 from utils.commonutils import CommonException 6 7 from django.core.exceptions import ObjectDoesNotExistdrf框架8 from django_redis import get_redis_connection 9 import json 10 from utils.MyAuth import LoginAuth 11 12 class ShoppingView(APIView): 13 authentication_classes = [LoginAuth] 14 #用戶登錄模塊的裝飾器 15 conn = get_redis_connection() 16 #使用redis的連接池 17 18 def post(self,request):19 response=LuffyResponse() 20 try: 21 course_in_id = request.data.get(‘course_id‘) 22 #post請求獲取課程的id 23 policy_in_id = request.data.get(‘policy_id‘) 24 #post請求獲取價格對應的id 25 course = models.Course.objects.get(pk=course_in_id)26 #查詢課程是否存在 27 policy_list = course.price_policy.all() 28 #獲取所有課程的價格策略 29 shopping_cart_dic_bytes=self.conn.get(‘shopping_card_%s‘ % request.user.id) 30 #json可以loadsbytes格式 31 shopping_cart_dic= json.loads(shopping_cart_dic_bytes) if shopping_cart_dic_bytes else {} 32 33 #循環價格策略 34 policy_dict = {} #創建一個空字典 35 for policy in policy_list: #循環獲取所有課程的價格策略 36 policy_dict[str(policy.pk)] = { 37 ‘period‘: policy.valid_period, #顯示學習的時間 38 ‘period_display‘: policy.get_valid_period_display(), #顯示學習時間對應的中文 39 ‘price‘: policy.price #獲取對應的價格 40 } 41 #檢驗價格策略是否是該課程的價格策略 42 if policy_in_id not in policy_dict: 43 raise CommonException(‘價格策略不合法,你是爬蟲‘) 44 45 #構建購物車的字典 46 shopping_cart_dic[course_in_id]= { 47 ‘title‘:course.name, 48 ‘img‘: course.cuorse_img, 49 ‘default_policy‘: policy_in_id, 50 ‘policy‘: policy_dict 51 } 52 #在redis內添加字符串 53 self.conn.set(‘shopping_card_%s‘ % request.user.id,json.dumps(shopping_cart_dic)) 54 response.msg = ‘加入購物車成功‘ 55 56 except CommonException as e: 57 response.status = 102 58 response.msg = e.msg 59 except ObjectDoesNotExist as e: 60 response.status = 101 61 response.msg = ‘您要加入購物車的課程不存在‘ 62 except Exception as e: 63 response.status = 105 64 response.msg= str(e) 65 return Response(response.get_dic) 66 67 def get(self,request): 68 response = LuffyResponse() 69 shopping_cart_dic_bytes = self.conn.get(‘shopping_card_%s‘ % request.user.id) 70 # json可以loadsbytes格式 71 shopping_cart_dic = json.loads(shopping_cart_dic_bytes) if shopping_cart_dic_bytes else {} 72 response.data = shopping_cart_dic 73 response.msg = ‘查詢成功‘ 74 75 return Response(response.get_dic) 76 77 def delete(self,request): 78 course_in_id = request.data.get(‘course_id‘) 79 #取出course的id號 80 response = LuffyResponse() 81 shopping_cart_dic_bytes = self.conn.get(‘shopping_card_%s‘ % request.user.id) 82 # json可以loadsbytes格式 83 shopping_cart_dic = json.loads(shopping_cart_dic_bytes) if shopping_cart_dic_bytes else {} 84 shopping_cart_dic.pop(course_in_id) 85 #刪除課程的id號 86 87 self.conn.set(‘shopping_card_%s‘ % request.user.id,json.dumps(shopping_cart_dic)) 88 response.msg = ‘刪除成功‘ 89 return Response(response.get_dic) 90 91 92 def put(self,request): 93 course_in_id = request.data.get(‘course_id‘) 94 policy_in_id = request.data.get(‘policy_id‘) 95 response = LuffyResponse() 96 try: 97 shopping_cart_dic_bytes = self.conn.get(‘shopping_card_%s‘ % request.user.id) 98 shopping_cart_dic = json.loads(shopping_cart_dic_bytes) if shopping_cart_dic_bytes else {} 99 policy = shopping_cart_dic[course_in_id][‘policy‘] 100 if policy_in_id not in policy: 101 raise CommonException(‘傳入的價格策略非法, 你是爬蟲‘) 102 shopping_cart_dic[course_in_id][‘default_policy‘]=policy_in_id 103 self.conn.set(‘shopping_card_%s‘ % request.user.id,json.dumps(shopping_cart_dic)) 104 response.msg = ‘修改成功‘ 105 except CommonException as e: 106 response.status = 102 107 response.msg = e.msg 108 except Exception as e: 109 response.status = 105 110 response.msg = str(e) 111 return Response(response.get_dic)
課程接口調試