博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lf 前后端分离 (4) 价格策略
阅读量:6940 次
发布时间:2019-06-27

本文共 3811 字,大约阅读时间需要 12 分钟。

一.价格策略

价格策略就是通过前端发送要购买的课程以及价格策略来找出表关联的字段返回客户端

通过contenttype 属性 找到课程所有的价格策略

for prcie_policy in course_obj.price_policy.all(): 进行判断获取的价格策略是否存在
if prcie_policy_id not in price_policy_dict: raise CommonException(1002, "价格策略有误")
在创建与前端匹配的数据结构
1 import redis 2 import json 3  4 from rest_framework.views import APIView 5 from rest_framework.response import Response 6  7 from app01.models import * 8 from app01.utils.auth import LoginAuth 9 from app01.utils.response import BaseResponse10 from app01.utils.exception import CommonException11 12 from django.conf import settings13 from django.core.exceptions import ObjectDoesNotExist14 15 cache = redis.Redis(decode_responses=True)16 17 class ShoppingCartView(APIView):18     authentication_classes = [LoginAuth]19 20     def post(self, request):21         course_id = request.data.get("course_id")22         prcie_policy_id = request.data.get("price_policy_id")23 24         user_id = request.user.pk25         res = BaseResponse()26 27         try:28             course_obj = Course.objects.get(pk=course_id)29             price_policy_dict = {}30             price_policy_list = []31             for prcie_policy in course_obj.price_policy.all():32                 price_policy_dict[prcie_policy.pk] = {33                     "id": prcie_policy.pk,34                     "valid_period": prcie_policy.valid_period,35                     "valid_period_text": prcie_policy.get_valid_period_display(),36                     "price": prcie_policy.price,37                     "default": prcie_policy_id == prcie_policy.pk38                 }39             print("price_policy_dict", price_policy_dict)40 41             #这里需要进行价格策略判断42             if prcie_policy_id not in price_policy_dict:43                 raise CommonException(1002, "价格策略有误")44             pp = PricePolicy.objects.get(pk=prcie_policy_id)45             for i in price_policy_dict:46                 price_policy_list.append(price_policy_dict[i])47 48             shoppingcar_key = settings.SHOPPING_CAR_KEY % (user_id, course_id)49             shoppingcar_val = {50                 "id":course_id,51                 "name": course_obj.name,52                 "course_img": course_obj.course_img,53                 "relate_price_policy": price_policy_list,54                 "default_price_period": prcie_policy_id,55                 "default_price": pp.price,56                 # "valid_period": pp.valid_period,57                 # "valid_period_text": pp.get_valid_period_display(),58             }59             cache.set(shoppingcar_key, json.dumps(shoppingcar_val, ensure_ascii=False))60             print(cache.get(shoppingcar_key))61 62             res.data = "加入购物车成功"63 64         except CommonException as e:65             res.code = e.code66             res.msg = e.msg67         except ObjectDoesNotExist as e:68             res.code = 100169             res.msg = "课程不存在"70 71         return Response(res.dict)72 73     def get(self, request):74 75 76 77         shopping_car_list = []78 79         for key in cache.keys(pattern="shoppingcar_1_*"):80             data = cache.get(key)81             print(data)82             shopping_car_list.append(json.loads(data))83 84         res = BaseResponse()85         res.data = {86             "total": len(shopping_car_list),87             "shopping_car_list": shopping_car_list88         }89 90 91 92         return Response(res.dict)
shopping
 

 

关于baseresponse 通过定义静态方法,@property无需调用添加() 实例化对象res .dict发送字典形式数据
class BaseResponse(object):    def __init__(self):        self.code = 1000        self.data = None        self.msg = ""    @property    def dict(self):        return self.__dict__if __name__ == '__main__':    res = BaseResponse()    res.data = 12312    print(res.dict)
 

 

 

 

转载于:https://www.cnblogs.com/zhangqing979797/p/10148158.html

你可能感兴趣的文章
如何升级phpmyadmin
查看>>
解决 phpmyadmin #2002 无法登录 MySQL 服务器
查看>>
hibernate添加时间问题
查看>>
要看的
查看>>
我的Git忽略文件
查看>>
Maven学习总结(六)——Maven与Eclipse整合
查看>>
我的友情链接
查看>>
深入浅出CChart 每日一课——第九课 实时数据显示,期中考试
查看>>
深入浅出CChart 每日一课——第十三课 似曾相识之云图,乱花渐欲迷人眼
查看>>
SpringMVC权限管理
查看>>
nginx Etag模块
查看>>
Oracle操作的部分ddl语句
查看>>
tune2fs指令
查看>>
Windows Server 8任务管理新功能
查看>>
博文测试
查看>>
PHP字符串转二进制(支持混合字符串)
查看>>
Excel 中使用SQL 语句查询数据(四)
查看>>
java开发中的23种设计模式详解 [转]
查看>>
Linux上vi(vim)编辑器使用教程
查看>>
C#设计模式之职责链
查看>>