python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口

python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口

PS:笔记只是为了更好表达我怎么语言表述,有些时候可能难免废话一推!
因知识有限, 如有错误, 欢迎指正!

每日细语:没有什么能够阻挡,你对自由的向往!

续言

续上一节的我们已经完成缓存和相关部分接口的请求处理,那我们现在进入到获取课程详细内容。

我们提前先批量插入一些数据。

# 批量插入一些课程信息
def InsertMany_course_contentTest():
    with session_scope():
        data = [
            {
                'code': 'xxx1',
                'course_code_id': '1000',
                'content_index': 1,
                'title': '爱因斯坦的伟大--起源01',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1000',
                'content_index': 2,
                'title': '爱因斯坦的伟大--起源02',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1001',
                'content_index': 1,
                'title': '爱因斯坦的伟大--奇迹',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1002',
                'content_index': 1,
                'title': '爱因斯坦的伟大--契机01',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1002',
                'content_index': 1,
                'title': '爱因斯坦的伟大--契机02',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1002',
                'content_index': 1,
                'title': '爱因斯坦的伟大--契机03',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1004',
                'content_index': 1,
                'title': '爱因斯坦的伟大--单身贵族',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1005',
                'content_index': 1,
                'title': '爱因斯坦的伟大--1005',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1006',
                'content_index': 1,
                'title': '爱因斯坦的伟大--1006',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1007',
                'content_index': 1,
                'title': '爱因斯坦的伟大--1007',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1008',
                'content_index': 1,
                'title': '爱因斯坦的伟大--1008',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '1009',
                'content_index': 1,
                'title': '爱因斯坦的伟大--1009',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10010',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10010',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10011',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10011',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10012',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10012',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10013',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10013',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10014',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10014',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10015',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10015',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10016',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10016',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
            {
                'code': 'xxx1',
                'course_code_id': '10017',
                'content_index': 1,
                'title': '爱因斯坦的伟大--10017',
                'content_detailed': '暂无介绍',
                'is_flee': '1',
                'visit_count': 20000,
                'buy_describe': '需要会员才可以看',
                'is_enable': 1,
                'content_file_url': 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
            },
        ]
        print(type(data))
        CourseContent.insert_many(data).execute()  # 插入了多个
python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口_第1张图片
image.png

业务流程

从列表页面选择查看课程信息的时候,传输相关的课程ID获取到对应的课程详细内容的列表信息。

课程ID---查询属于从课程ID所有课程详情记录

过程

1:新增逻辑处理模块


python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口_第2张图片
image.png

2:编写逻辑处理模块的查询代码course_content_logic.py

#!/usr/bin/evn python
# coding=utf-8
# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +
#        ┏┓   ┏┓+ +
#    ┏┛┻━━━┛┻┓ + +
#    ┃       ┃  
#    ┃   ━   ┃ ++ + + +
#    ████━████ ┃+
#    ┃       ┃ +
#    ┃   ┻   ┃
#    ┃       ┃ + +
#    ┗━┓   ┏━┛
#      ┃   ┃           
#      ┃   ┃ + + + +
#      ┃   ┃    Codes are far away from bugs with the animal protecting   
#      ┃   ┃ +     神兽保佑,代码无bug  
#      ┃   ┃
#      ┃   ┃  +         
#      ┃    ┗━━━┓ + +
#      ┃        ┣┓
#      ┃        ┏┛
#      ┗┓┓┏━┳┓┏┛ + + + +
#       ┃┫┫ ┃┫┫
#       ┗┻┛ ┗┻┛+ + + +
# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + +"""
"""
Author = zyx
@Create_Time: 2018/4/25 11:23
@version: v1.0.0
@Contact: [email protected]
@File: course_content.py
@文件功能描述: 课程详细内容的逻辑处理
"""

from business_logic.db_model.knowledgepay_model import session_scope, CourseContent
from base_framework.cache import redis_cache_helper


# 分页查询
def get_course_content(course_code_id=''):
    # 缓存的Key
    cache_key = 'get_course_content' + str(course_code_id)
    # 获取缓存值
    result_list = redis_cache_helper.get(cache_key)
    # 判断是否有值
    if result_list:
        print('直接的从缓存中返回')
        if result_list == 'null':
            return []  # 查询没有结果的时候
        return result_list

    # 否则从数据库中进行读取
    print('否则从数据库中进行读取')
    with session_scope():
        result = CourseContent.select().dicts().where(CourseContent.course_code_id == course_code_id).order_by(CourseContent.content_index)
        if not result:
            # 把对应的结果保存到缓存中---缓存穿透:处理
            redis_cache_helper.set(cache_key, "null", timeout=20)
            return [], True  # 查询没有结果的时候
        # for row in result: result_list.append(row)
        result_list = [v for v in result]  # 使用列表推导式
        # 把对应的结果保存到缓存中
        redis_cache_helper.set(cache_key, result_list, timeout=10)
        # 返回最终查询结果
        return result_list

3:新增路由模块


python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口_第3张图片
image.png

get_course_content.py模块内容:

#!/usr/bin/evn python
# coding=utf-8
"""
Author = zyx
@Create_Time: 2018/4/25 10:48
@version: v1.0.0
@Contact: [email protected]
@File: get_course.py
@文件功能描述:
"""

from bottle import get, post, request
from base_framework.net import web_helper, session_helper
from business_logic.api_db_logics import course_content_logic
from base_framework.utils import json_helper


@get('/api/v1/course/content/get/')
@post('/api/v1/course/content/get/')
def callback():
    pass
    '''根据课程编号,获取课程详细信息,'''
    course_code_id = web_helper.get_query('course_code_id', 'course_code_id')  # 默认开启 不能为空的验证
    print(course_code_id)
    '''1:连接数据库并读取数据列表'''
    result_list = course_content_logic.get_course_content(course_code_id=course_code_id)

    return_date = {
        "data": result_list
    }

    if not result_list:
        return web_helper.return_msg("9991", "暂无课程内容详情", return_date)

    return web_helper.return_msg("0000", "获取成功", return_date)

3:在main.py加入模块导入


image.png

测试:

地址:http://127.0.0.1:8188/api/v1/course/content/get/?course_code_id=1000

python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口_第4张图片
image.png

{
    "return_data": {
        "data": [
            {
                "content_detailed": "暂无介绍",
                "expiry_date": null,
                "id": 1,
                "buy_describe": "需要会员才可以看",
                "is_enable": 1,
                "add_time": "2018-04-26 11:40:44",
                "content_file_url": "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4",
                "content_index": 1,
                "code": "xxx1",
                "title": "爱因斯坦的伟大--起源01",
                "course_code_id": 1000,
                "is_flee": "1",
                "visit_count": 20000
            },
            {
                "content_detailed": "暂无介绍",
                "expiry_date": null,
                "id": 2,
                "buy_describe": "需要会员才可以看",
                "is_enable": 1,
                "add_time": "2018-04-26 11:40:44",
                "content_file_url": "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4",
                "content_index": 2,
                "code": "xxx1",
                "title": "爱因斯坦的伟大--起源02",
                "course_code_id": 1000,
                "is_flee": "1",
                "visit_count": 20000
            }
        ]
    },
    "return_des": "获取成功",
    "return_code": "0000"
}

结束

以上笔记纯属个人学习实践总结,有兴趣的同学可以加群一起学习讨论QQ:308711822

你可能感兴趣的:(python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(13)---获取课程详情接口)