文章目录

  • 基于Django中间件引发的编程思想(==重点==)
    • importlib模块使用
    • 编程思想

基于Django中间件引发的编程思想(重点)

importlib模块使用

能够以字符串的形式导入模块,最小单位只能到模块名

# 1. 创建一个py文件 aaa.py
# 2. 创建一个mypach文件夹,里面创建一个bbb.py文件,写上name='zhao'然后再aaa.py中书写以下代码
import importlibres = 'mypack.bbb'  # 最小单位只能到模块的名字,不能点模块里的变量名
ret = importlib.import_module(res)  # from mypack import bbb
print(ret)# 结果如下
<module 'mypack.bbb' from 'E:\\Python\\python\\python进阶\\WEB开发\\day12\\mypack\\bbb.py'>

编程思想

1. 先创建一个notify文件夹,里面创建py文件,有几个功能,创建几个py文件
2. 因为一个文件夹,里面有一个个的py文件,就是一个包,所以要再notify文件夹里创建__init__.py文件
3. settings #配置文件
4. start.py #启动文件

email.py

class Email(object):def __init__(self):pass  # 发送邮箱需要做的前期准备工作   接口什么的def send(self, content):print('Email通知:%s' % content)

qq.py

class Qq(object):def __init__(self):pass  # 发送QQ需要做的前期准备工作def send(self, content):print('QQ通知:%s' % content)

wechat.py

class Wechat(object):def __init__(self):pass  # 发送微信需要做的前期准备工作def send(self, content):print('微信通知:%s' % content)

settings.py

NOTIFY_LIST = [       'notify.email.Email','notify.qq.Qq','notify.wechat.Wechat',
]

__init__.py (编程思想的灵魂)

import settings
import importlibdef send_all(content):for path_str in settings.NOTIFY_LIST:  # 'notify.email.Email',module_path, class_name = path_str.rsplit('.', maxsplit=1)# module_path='notify.email'# class_name='Email'# 1. 利用字符串导入模块module = importlib.import_module(module_path)  # from motify import email# 2. 利用反射获取类名cls = getattr(module, class_name)  # Email Qq Wechat# 3. 生成类的对象obj = cls()# 4. 利用鸭子类型直接调用send方法obj.send(content)

start.py

import notifynotify.send_all('国庆不放假')

基于Django中间件引发的编程思想相关推荐

  1. csrf跨站请求伪造,CBV添加装饰器,auth认证模块,基于django中间件设计项目功能

    文章目录 csrf跨站请求伪造 csrf的定义 csrf的分类 csrf的攻击过程 csrf的攻击条件 举例说明 Django提供的解决策略 csrf相关装饰器 FBV CBV 方法一(直接在类中的某 ...

  2. 基于PHP聊天室的编程思想

    基于PHP聊天室的编程思想 大门 -- 登陆 1 页面登陆的基本要素 你可以在我的主页看到登陆的表单,这里提供了最基本的登陆表单项 (1)登陆表单 <form method=POST name= ...

  3. php 聊天室 教程,基于PHP的聊天室编程思想-PHP教程,PHP基础

    1 页面登陆的基本要素 你可以在我的竹叶看到登陆 的表单,这里提供了最基本的登陆表单项 (1)登陆表单 (a)聊天表单的名字为chatform,我使用action=enter作为进入聊天室的入口,如果 ...

  4. django view返回form error_Django(解决被钓鱼CSRF、Django中间件、反射)

    今日内容概要 django中间件 全局用户身份校验 全局用户权限校验(补充) 全局访问频率校验 ... csrf跨站请求伪造 基于django中间件一个重要的编程思想(反射) https://www. ...

  5. 【Java】MapReduce编程的编程思想以及基于Hadoop的Wordcount的程序的实现

    1.MapReduce编程的编程思想(比如该文件就只输入三行,如下面所示) hive spark hive hbase hadoop hive spark sqoop flume scala(0,&q ...

  6. 基于STM32F103移植华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机

    华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机 因为在做华为LiteOS任务挂起和恢复需要使用到按键去触发任务挂起和恢复动作,因为我就萌发出使用状态机这种架构做一个按键检测触发.回想已 ...

  7. Java编程思想日志

    Thinking In Java的作者是大牛!做事要站在巨人的肩膀上有助于提高效率和开阔眼界!建议学习java的小伙伴儿有时间可以抽空了解一下,以下内容为读书笔记,比较杂乱,仅供参考,推荐阅读原著: ...

  8. Android知识架构 · Java的编程思想

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...

  9. Java编程思想翻译勘误

    总的来说,Java编程思想是一本好书:但是因为译者可能不懂计算机,很多地方都有严重错误. 之前和朋友抱怨过,朋友提议抱怨无用不如干点实事.遂决定边看边将自己找到的翻译错误贴出来,希望能给别人一些帮助. ...

最新文章

  1. Mysql 内置函数
  2. 025_Tree树形控件
  3. UDP千兆以太网FPGA_verilog实现(四、代码前期准备-UDP和IP协议构建)
  4. Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
  5. JAVA调用HTTP接口
  6. 在线电脑配置PHP源码,域名授权系统PHP源码 V2.7.0 支持盗版追踪
  7. ROS-SLAM仿真-hector
  8. tcp 四次挥手_TCP三次握手和四次挥手通俗理解
  9. BetaMeow----利用机器学习做五子棋AI
  10. 悉尼mit it硕士选课 INFO5990
  11. 呆萝卜与每日优鲜竞品分析
  12. jvm 面试之参数实战
  13. 亚声速 – 超声速等熵喷管流动 数值模拟(文字)
  14. 嵌入式Linux(十三)RTC实时时钟
  15. 【译】什么才是优秀的代码
  16. logTracker错误日志跟踪组件(二)
  17. 人机交互-1-人机交互概述
  18. WordArt与everything联用生成含中文的词云
  19. C语言实现双向非循环链表(不带头结点)的基本操作
  20. iOS——自定义cell

热门文章

  1. 如何实现python对抖音视频取消点赞?
  2. TinyMCE 富文本编辑器 ━━ 一键排版功能所需正则表达式整理及学习
  3. CDR插件开发之CPG插件017 - 在VS2019中实现CPG插件调试(自动写入CPG、自动启动CDR)
  4. 想看开发者与技术大咖现场battle?百度AI快车道线下启动
  5. 城市拥堵加剧,都是互联网快车惹的祸?
  6. 在做RTSP摄像机H5无插件直播中遇到的对接海康摄像机发送OPTIONS心跳时遇到的坑
  7. 软件测试工程师真实经历,一个软件测试工程师的加班经历(转)
  8. 简单的统计英文单词个数
  9. 如何真正免费运营推广APP应用
  10. 计算机设备购置清单,计算机硬件实验室设备采购清单