美文网首页
python web(bottle框架)知行合一之-简单知识付费

python web(bottle框架)知行合一之-简单知识付费

作者: 小钟钟同学 | 来源:发表于2018-04-20 14:32 被阅读55次

python web(bottle框架)知行合一之-简单知识付费平台-”全栈“实践(8)---后端代码开始编写入口

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

每日细语:生活有些时候是一场逃亡,我们不能坐以待毙!

续言

上一小节我们已经完成了相关数据库建表及数据库模型的对应建立。那我们这一章开始应该是开始进入正题,开始编写后端服务接口。

首先明确的一下就是所谓的后端接口服务就是我们经常说的接口API,我们提供给前端调用一些API接口。

因为现在新增了一个关于数据库模型的出现,那么我们对应的项目结果表也改变一下,新增一个包模块来管理一下这个数据库的模型。

最新的项目结构图示:


image.png

对应生成数据库模型的命令:

Administrator@AFOD3-605031310 MINGW64 /d/python_learn/KnowledgePay
$ python -m pwiz -e postgresql -H localhost -p 5432 -u postgres -P 123456 knowledgepay> business_logic/db_model/knowledgepay_model.py
Password:

Administrator@AFOD3-605031310 MINGW64 /d/python_learn/KnowledgePay
$
image.png

bottle框架启动说明

因为我们的bottle框架自带了wsgi发的服务器,所以我们不需要额外的其他配置就可以直接的启动,就是 python main.py就可以启动web 接口服务了!

当然这只合适于本地开发及调试,因为它还是单进程的方式!我们正式部署的到线上的一般还是需要配合 uwsgi和ngixn等来启动项目!

入口类main.py

代码:

#!/usr/bin/evn python
# coding=utf-8
"""
Author = zyx
@Create_Time: 2018/4/14 0:58
@version: v1.0.0
@Contact: 308711822@qq.com
@File: main.py
@文件功能描述:
"""

import logging
import os
import sys

import bottle
from beaker.middleware import SessionMiddleware
from bottle import TEMPLATE_PATH
from bottle import default_app, run, hook, request, response, get, error, route, static_file

#############################################
# 初始化bottle框架相关参数----应用程序的主入口文件
# 调用的时候
#############################################

# 获取本脚本所在的路径
pro_path = os.path.split(os.path.realpath(__file__))[0]
sys.path.append(pro_path)

# 设置当前bottle运行提交的最大数据值为2M
bottle.BaseRequest.MEMFILE_MAX = 1024 * 1024 * 2

# 定义静态文件目录路径
static_path = os.path.join(pro_path, 'template')

# 定义模板路径
TEMPLATE_PATH.append(os.path.join(pro_path, 'template'))

# 如果不存在log文件夹, 则再当前脚本目录下创建log文件夹存放日志文件-
if not os.path.exists('log'):
    os.mkdir('log')

# 定义日志目录
log_path = os.path.join(pro_path, 'log')
# print('当前日志路径------', log_path)

# 如果不存在log文件夹, 则再当前脚本目录下创建log文件夹存放日志文件-
if not os.path.exists('download'):
    os.mkdir('download')

# 定义日志目录
download_path = os.path.join(pro_path, 'download')
# print('当前日志路径------', log_path)


# 定义日志输出格式-输出是信息等级的
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    filename="%s/info.log" % log_path,
                    filemode='a')

# 设置session参数
session_opts = {
    'session.type': 'file',
    'session.cookie_expires': 3600,
    'session.data_dir': '/tmp/sessions/order',
    'session.auto': True
}


@get('/')
def callback():
    return '嗨!小钟同学!'

@get('/log/')
def callback():
    pass


@error(500)
def miss(code):
    # 错误页面,一般来说,可以在网站制定一个404的HTML页面,然后用return template('404')去访问404这个页面
    pass


@error(404)
def miss(code):
    # 错误页面,一般来说,可以在网站制定一个404的HTML页面,然后用return template('404')去访问404这个页面
    pass


# 函数主入口
if __name__ == '__main__':

    app_argv = SessionMiddleware(default_app(), session_opts)
    run(app=app_argv, host='127.0.0.1', port=8188, debug=True, reloader=True)
else:

    # 初始化email发送参数
    # mail_helper.set_mail(const.MAIL)
    application = SessionMiddleware(default_app(), session_opts)

右键运行:

image.png

访问地址:

image.png

从入口类提取关于session处理工具类

PS:建议大家去学习一下这位大神的博文!我后续的开发也都是基于他的系列文章基础上来展开的哟!

更多内容,敬请观注他的博客:http://www.cnblogs.com/EmptyFS/

从上面的入口类观察到后续,可能我们的很多的地方还是需要用到session的地方,这样的话,其实我们可以考虑一下进行提取封装一个工具类出来。

更多的工具类的提取及封装,大家可以参考大神的博文::http://www.cnblogs.com/EmptyFS/

session_helper.py

#!/usr/bin/evn python
# coding=utf-8
"""
Author = zyx
@Create_Time: 2018/4/20 14:24
@version: v1.0.0
@Contact: 308711822@qq.com
@File: session_helper.py
@文件功能描述:
"""
from bottle import request

# 设置session参数
session_opts = {
    'session.type': 'file',
    'session.cookie_expires': 3600,
    'session.data_dir': '/tmp/sessions/order',
    'session.auto': True
}


def set_session(key='', value=''):
    """设置当前用户session"""
    s = request.environ.get('beaker.session')
    s[key] = value
    s.save()


def get_session():
    """获取当前用户session"""
    return request.environ.get('beaker.session')

结束

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

相关文章

网友评论

      本文标题:python web(bottle框架)知行合一之-简单知识付费

      本文链接:https://www.haomeiwen.com/subject/vqgakftx.html