知识点一:

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

从代码中我们可以看出,这个函数其实很简单,就是首先将要导入的路径名分割成模块名和类名,然后再来从模块中获得到类这个属性,然后就完成了。照着这个思路来看,其实我们导入一个函数也是可以的。

 

posted on 2018-03-06 21:02  程序员一学徒  阅读(195)  评论(0)    收藏  举报