django17:importlib應用中間件代碼思想

轉載:https://www.cnblogs.com/alice-bj/articles/9276880.html

?

背景

仿django的中間件的編程思想

用戶可通過配置,選擇是否啟用某個組件/某個功能,只需要配置

eg:報警系統,發郵件,發微信 。。。

( 根據字符串導入模塊, 利用反射找到模塊下的類,實例化。執行 )

?

code

?

# settings.pyNOTIFY_LIST = ['notify.email.Email','notify.msg.Msg','notify.wechat.Wechat',
]-----------------------------# app.pyfrom notify import send_xxxdef run():send_xxx("報警")if __name__ == "__main__":run()----------------------------# notify/__init__.py# 根據字符串 導入模塊import settings
import importlibdef send_xxx(content):for path in settings.NOTIFY_LIST:# 'notify.email.Email',# 'notify.msg.Msg',# 'notify.wechat.Wechat',module_path,class_name = path.rsplit('.',maxsplit=1)# 根據字符串導入模塊module = importlib.import_module(module_path)# 根據類名稱去模塊中獲取類cls = getattr(module,class_name)# 根據類實例化obj = cls()obj.send(content)-----------------------------# notify/email.pyclass Email(object):def __init__(self):passdef send(self,content):print("email send..")# notify/msg.pyclass Msg(object):def __init__(self):passdef send(self,content):print("msg send..")# notify/wechat.pyclass Wechat(object):def __init__(self):passdef send(self,content):print("wechat send..")

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280552.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280552.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280552.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 全棧開發基礎

python面向對象 python異常處理 python網絡編程 python并發編程 臨時目錄 轉載于:https://www.cnblogs.com/fixdq/p/8883304.html

IBM連續兩年大數據市場占有率全球第一

ZDNet至頂網服務器頻道 04月22日 新聞消息:IBM 近日宣布,根據市場調研機構Wikibon最新研究報告《大數據供應商收益與市場預測》,IBM連續兩年實現大數據市場占有率第一,領跑報告中的70多家大數據供應商。同期,IBM年度報告也顯示&am…

idou老師教你學Istio06: 如何用istio實現流量遷移

流量遷移是流量管理的一個重要功能。istio提供的流量管理功能將流量從基礎設施擴展中解耦,支持動態請求路由,故障注入、超時重試、熔斷和流量遷移等。流量遷移的主要目的是將流量從微服務的某一版本的逐步遷移至另一個版本,如在新舊版本之間進…

用最少的代碼,寫一個完整MES項目(.NET6+WPF)

工業4.0時代,智能智造MES系統大行其道,然而基于.NET跨平臺的罕見!這里有一套《.NET6WPF企業級MES實戰》教程,基于.NET6跨平臺開發,實現了MES多核心功能,尤其是開發框架完整,非常適合復用。這里分…

django18:auth模塊

Auth模塊 執行數據庫遷移命令后,自動生產多個表。 django_session auth_user 直接訪問admin路由,需要輸入用戶名和密碼,就是參考auth_user表 管理員用戶才能進入 創建超級用戶 createsuperuser from django.contrib import auth1.校驗用…

hulu dpp_什么是直播電視的Hulu,它可以代替您的有線電視訂閱嗎?

hulu dppStreaming cable replacements are becoming a much more appealing option for cable cutters across the board, with more choices available than ever before. Hulu’s Live TV option is a relative newcomer to the scene, but is it worth it? 對于全系列的電…

suse linux ssh遠程無法訪問問題

當正常安裝完Suse Linux Enterprise Server 11 sp1 時,無法通過SecureCRT或者PuTTY之類的終端程序進行連接。 折騰了一下,發現問題所在: 1、 需要關閉防火墻,如下圖在YAST里可以關閉,也可以使用下面命令行的方式&…

4.Linux的目錄結構

Linux的目錄結構 (1)"/"目錄 Linux文件系統的入口,也是出于最高一級的目錄 (2)"/bin" 基礎系統所需要的那些命令位于此目錄。也是最小系統所需要命令;比如ls、cp、mkdir等命令;功能和/usr/bin類似,這個目錄中…

Jade —— 源于 Node.js 的 HTML 模板引擎

2013-12-11 發布Jade —— 源于 Node.js 的 HTML 模板引擎 開源項目介紹 web 模板引擎 node.js jade 207.8k 次閱讀 讀完需要 69 分鐘54Jade 是一個高性能的模板引擎,它深受 Haml 影響,它是用 JavaScript 實現的,并且可以供 Node…

詐騙者如何偽造電子郵件地址,以及如何分辨

Consider this a public service announcement: Scammers can forge email addresses. Your email program may say a message is from a certain email address, but it may be from another address entirely. 考慮這是一項公共服務公告:詐騙者可以偽造電子郵件地…

如何對整個 WPF 應用程序進行灰度

如何對整個 WPF 應用程序進行灰度控件名:GrayscaleEffect作 者:WPFDevelopersOrg - 驚鏵原文鏈接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers 簡易源碼[2]框架使用.NET40;Visual Studio 2019;如果要實現灰度第一反是…

django19:項目開發流程

參考:https://www.bilibili.com/video/BV1QE41147hU?p831&spm_id_frompageDriver

React Native - FlexBox彈性盒模型

FlexBox布局 1. 什么是FlexBox布局? 彈性盒模型(The Flexible Box Module),又叫FlexBox,意為"彈性布局",旨在通過彈性的方式來對齊和分布容器中內容的空間,使其能適應不同屏幕,為盒模型提供最大的靈活性. ??Flex布局主要思想是: 讓容器有能力讓其子項目能夠改變其…

java虛擬機讀寫其他進程的數據

在java中,process類提供了如下3個方法,用于讓程序和其他子進程進行通信。 InputStream getErrorStream():獲取子進程的錯誤流。 InputStream getInputStream():獲取子進程的輸入流。…

release8_如何在Windows 8 Release Preview中將Chrome用作Metro瀏覽器

release8Windows 8 allows third-party browser to replace Internet Explorer in the Metro environment — except on Windows RT. You can use Google Chrome in Metro today, and Firefox for Metro is on the way. Windows 8允許第三方瀏覽器在Metro環境中替換Internet Ex…

html jQuery/bootstrap通過網絡bootcdn導入連接

網絡連接網址 https://www.bootcdn.cn/ <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>title</title><!-- Bootstrap --><link href"https://cdn.bootcdn.net/ajax/libs/twi…

Python深入類和對象

一. 鴨子類型和多態 1.什么是鴨子類型&#xff1a; 在程序設計中&#xff0c;鴨子類型&#xff08;英語&#xff1a;Duck typing&#xff09;是動態類型和某些靜態語言的一種對象推斷風格。"鴨子類型"像多態一樣工作&#xff0c;但是沒有繼承。“鴨子類型”的語言是這…

linux中/usr下文件權限修改setuid導致的問題

2019獨角獸企業重金招聘Python工程師標準>>> 在Ubuntu系統中因為一些原因我使用如下命令修改了/usr目錄的擁有者權限&#xff1a; chown -R root:root /usr結果直接導致系統無法正常啟動&#xff0c;通過跟蹤系統啟動日志/var/log/syslog找到如下失敗原因&#xff1…

[轉載]unix環境高級編程備忘:理解保存的設置用戶ID,設置用戶ID位,有效用戶ID,實際用戶ID...

轉載自http://www.cnblogs.com/stemon/p/5287631.html 一、基本概念 實際用戶ID(RUID)&#xff1a;用于標識一個系統中用戶是誰&#xff0c;一般是在登錄之后&#xff0c;就被唯一的確定&#xff0c;就是登錄的用戶的uid。 有效用戶ID(EUID)&#xff1a;用于系統決定用戶對系統…

django20:BBS網頁設計/注冊功能/驗證碼代碼

表設計 注冊功能 """ 1.注冊功能需要forms組件 不同功能&#xff0c;可單獨一個py文件2.利用forms組件渲染前端標簽1.利用ajax提交2.forms組件獲取用戶數據的數據。$(#form).serializeArray()獲取forms標簽所有用戶普通鍵值對的數據3. 手動渲染頭像label里面內…