django知识点总结三

1. 为什么要开发“学城”?
        - 提高在线 完课率(学成率)。
        - 具体:
            - 购买时间周期
            - 闯关式学习
            - 考核
            - 导师筛选
            - 导师监督(跟进记录)
            - 答疑时间(12小时)
            - 奖惩措施
                - 时间
                - 作业

    2. 开发周期和团队?
        团队:
            - 开发
                - 导师后台,stark组件+rbac : 1人
                - 管理后台,stark组件+rbac : 1人
                - 主站
                    - vue.js  1人
                    - api     村长+1/2文州+1/2Alex+其他 + 村长
            - 运维(1人)
            - 测试(1人)
            - 产品经理(1人)
            - UI设计(1人)
            - 运营(1人)
            - 销售(4人)
            - 全职导师(2人)
            - 签约讲师(...)
        周期:
            - 7月份
            - 11月份上线
            - 11月份~次年5月份: 修Bug,活动支持,广告。。。
            - 6月份:开发题库系统
        
    3. 购买流程
        - 加入购物车
        - 去结算
        - 去支付
    1. 路飞学城的购物车如何实现?
    
    2. 商品是否有个数?
        - 价格策略(用事件来类比个数)
        - 购买之后就开始计时
        
    3. 购物车在redis的结构?
    
    4. 购物车购买数量有限制吗?
        .keys('xxxxx')
    5. 购物车是否设置超时时间?
        .conn.expire("shopping_car_1_1" ,60*30)
    
    方案:购买课程个数限制(200个)
    
    6. 为什么把购物车信息放入redis?
        - 临时状态
        - 频繁修改的话,速度快。
        
    7. 具体购物车的逻辑?
        添加:
            1. 用户选择:课程、价格策略,提交
            2. 获取课程、价格策略进行合法性校验(数据库查询)
            3. 数据获取,构造结构:
                {
                    shopping_car_用户ID_课程ID:{
                        title:"...",
                        img:'xxx',
                        policy:{
                            ...
                        }
                    }
                }
            4. 将数据以字典的形式保存到redis中。
        修改:
            1. 用户选择:课程、价格策略,提交
            2. 获取课程、价格策略进行合法性校验(redis查询)
            3. 更新价格策略
        删除:
            1. 用户选择:课程提交
            2. 获取课程合法性校验(redis查询)
            3. 删除
        查看:
            1. 构造Key shopping_car_用户ID_*
            2. scan_iter
    
    8. 原则:
        - 简答逻辑先处理
        - try
        - 细粒度异常+自定义异常
        - 导入模块
            - 内置
            - 框架
            - 自定义
        - 注释
            - 文件
            - 类
            - 函数
        - 文件名、类、函数、project
        - 对功能进行分类
        - 减少代码层级
        - BaseResponse

Q补充:
        con = {
            "id":1,
            "age__gt":9,
            "name__lt": 8
            "name__lt": 8
        }

        # 构造AND
        models.User.objects.filter(**con)

        # 构造复杂(条件写死)
        con = Q(Q(account=request.auth.user) & Q(status=0)) | Q(coupon__valid_begin_date__lte=ctime)
        models.User.objects.filter(con)
        # 构造负责(条件动态)
        q1 = Q()
        q1.connector = 'OR'
        for k,v in con.items():
            q1.children.append((k,v,))
        models.User.objects.filter(q1)

posted @ 2018-06-11 16:03  liang哥哥  阅读(69)  评论(0)    收藏  举报