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')
加密