编程模板【Flask】

文件目录:

目录介绍

  • app.py:启动文件
  • settings.py:设置文件
  • utils:外部引用包
  • message:其中的一个消息包

下面我们来详细看下主要代码的实现:

1、app.py:这是一个常见的Flask文件,也是本格式模板的启动文件,其中引入了message包中的send_msg,send_msg()方法在message包中的__init__.py中作为统一管理message的py文件

from flask import Flask
from utils.message import send_msg

app = Flask(__name__)


@app.route('/')
def index():
    ret = send_msg('发送内容')
    print(ret)
    return "ok"

if __name__ == '__main__':
    app.run()

2、message包中的__init__.py:使用了字符串分割和类的反射来执行配置文件settings中的Model_list配置列表

import settings
import importlib

def send_msg(msg):
    for path in settings.Model_list:
        # 分割模块和函数名
        m,c = path.rsplit('.',maxsplit=1)
        # 导入模块
        md = importlib.import_module(m)
        # 实例化类
        obj = getattr(md,c)()
        # 调用类方法
        obj.send(msg)

    return "执行成功"

3、settings.py:配置文件

Model_list=[
    "utils.message.email.Email",
    "utils.message.msg.Msg",
    "utils.message.wechat.WeChat",
]

4、email.py、msg.py、wechat.py:为message包中的应用,这三个模块类分别继承了base.py

from .base import Base


class Email(object,Base):
    '''
    发送邮件
    '''
    def __init__(self):
        self.username ="username"
        self.pwd ="pwd"

    def send(self,send_msg):
        # 发送消息
        print('发送邮件:',send_msg)
email.py
from .base import Base


class Msg(object,Base):
    '''
    发送短信
    '''
    def __init__(self):
        self.username ="username"
        self.pwd ="pwd"

    def send(self,send_msg):
        # 发送消息
        print('发送短信:',send_msg)
msg.py
from .base import Base


class WeChat(object,Base):
    '''
    发送微信
    '''
    def __init__(self):
        self.username ="username"
        self.pwd ="pwd"

    def send(self,send_msg):
        # 发送消息
        print('发送微信:',send_msg)
wechat.py

5、base.py:为了保证所有的类都拥有方法send(),所以继承base,没有send则程序启动报异常

class Base(object):

    def send(self):
        raise NotADirectoryError('......')

 

posted @ 2019-04-02 12:14  我在地球凑人数的日子  阅读(151)  评论(0)    收藏  举报