知识点一:
settings.A, 寻找setting中的a变量,先在自己的settings中找,找不到,再去global_settings中找
知识点二:
导入模块的方式:
方式1: 正常情况下我们这样导入 import re
方式二: 在Django中 模块名是字符串
A='django.middleware.clickjacking.XFrameOptionsMiddleware' B=import_module(A)
这样B就可以调用里边的变量和方法了
方式三: __import__()函数 括号内接受的是字符串,我们看到的import os 其实是import 调用的__import__() 函数 os=__import__("os")
A='django.middleware.clickjacking.XFrameOptionsMiddleware' B=__import__(A) 这样B就可以调用里边的变量和方法了
知识点3:
Django的import_string函数():根据相应的字符串路径得到相应的类
import_string函数的代码如下所示:
import importlib def import_string(dotted_path):
#dotted_path是一个字符串,这个字符串中包含模快名(也就是路径)和类名字 try: module_path, class_name = dotted_path.rsplit('.', 1) except ValueError as err: raise ImportError("%s doesn't look like a module path" % dotted_path) from err #根据路径导入模块名 module = import_module(module_path) try:
# 根据反射,用类名字符串来得到类 return getattr(module, class_name) except AttributeError as err: raise ImportError('Module "%s" does not define a "%s" attribute/class' % ( module_path, class_name) ) from err
从代码中我们可以看出,这个函数其实很简单,就是首先将要导入的路径名分割成模块名和类名,然后再来从模块中获得到类这个属性,然后就完成了。照着这个思路来看,其实我们导入一个函数也是可以的。
浙公网安备 33010602011771号