美文网首页
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