Django中的开放封闭原则

关于开放封闭原则,其核心的思想是:
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
django的中间件就体现了这种开放封闭原则,对于功能的拓展我们只需要修改配置文件,而不必修改逻辑代码.
下面介绍如何Django中通过字符串来导入类
import importlib
module_path,class_name = path.rsplit('.',maxsplit=1)
# 根据字符串导入模块:
module = importlib.import_module(module_path)
# 根据类名称去模块中获取类
cls = getattr(module,class_name)
# 根据类实例化
obj = cls()
# Django中间件中都有固定的方法,所以用obj直接调用方法就行了

检查已导入模块

>>> import json
>>> import sys
>>> sys.builtin_module_names
('_ast', '_bisect', '_blake2', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_csv', '_datetime', '_findvs', '_functools', '_heapq', '_imp', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_opcode', '_operator', '_pickle', '_random', '_sha1', '_sha256', '_sha3', '_sha512', '_signal', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', '_winapi', 'array', 'atexit', 'audioop', 'binascii', 'builtins', 'cmath', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'parser', 'sys', 'time', 'winreg', 'xxsubtype', 'zipimport', 'zlib')

加密

 

posted @ 2018-04-12 19:29  瓜田月夜  阅读(115)  评论(0编辑  收藏  举报