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() # 插入了多个
业务流程
从列表页面选择查看课程信息的时候,传输相关的课程ID获取到对应的课程详细内容的列表信息。
课程ID---查询属于从课程ID所有课程详情记录
过程
1:新增逻辑处理模块
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:新增路由模块
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加入模块导入
测试:
地址:http://127.0.0.1:8188/api/v1/course/content/get/?course_code_id=1000
{
"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