写在开头:

  每个APP都会有配置文件,像下代码Django等等这种的settings里面的配置导入都是字符串的,他们是怎么做的呢?

MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]

1.首先假如有这种结构:

2.开始

csrf中有这么一个类:

# Author:Jesi
# Time : 2018/10/19 12:33
class CORS(object):def process_response(self):print(666)

想要在run中导入csrf这个文件怎么做呢?

# Author:Jesi
# Time : 2018/10/19 12:48
path="auth.csrf.CORS"import importlib                                        #导入这个模块module_path,class_name=path.rsplit(".",maxsplit=1)      #通过右边的.分割开。print(module_path,class_name)     #auth.csrf     CORS
#根据字符串的形式导入模块
m=importlib.import_module(module_path)                  #然后根据这个方法可以导入模块cls = getattr(m,class_name)                            #通过getattr拿到这个类。
obj=cls()                                              #实例化对象
obj.process_response()                                 #执行打印666

3.源码

Django的配置文件就是这么导入的:

附上源码:

def import_string(dotted_path):"""Import a dotted module path and return the attribute/class designated by thelast name in the path. Raise ImportError if the import failed."""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 errmodule = 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

转载于:https://www.cnblogs.com/geogre123/p/9815865.html

django的配置文件字符串是怎么导入的?相关推荐

  1. springboot yaml/yml配置文件字符串换行

    前言 springboot 2.1.1.RELEASE yaml配置文件字符串换行 需要把RSA公钥放到配置文件中,因字符串太长,为了方便维护,将公钥换行. publicKey: "MIIB ...

  2. django 使用配置文件实现登录方式(人脸、密码、刷卡、指纹等)的自定义选择

    问题引出 网站登录系统,目前开发了人脸识别登录(见我写的博文).账号密码登录.刷卡登录三个功能,后期可以扩展指纹登录等. 但是对于不同的应用场景需要不同的登录方式,因此针对不同场景定制系统很有必要.比 ...

  3. 【django】配置文件

    1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 当前⼯程的根⽬录,Django会依 ...

  4. php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码

    <Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...

  5. Python Django 生成随机字符串UUID的使用示例

  6. django新建utils文件夹与导入方法

    首先在主目录下创建utils文件夹(与manage.py在同一个目录) 右键mark为source root 在views中导入时用: from utils import xxxx

  7. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器drf版本控制

    1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...

  8. excel 导入 sqlserver 字符串被截取为255长度解决方案

    原文出处: http://blog.csdn.net/xiaoma0529/article/details/21336535 excel表格导入sqlserver数据表中 内容被截取为255长度的字符 ...

  9. django整体文件结构、配置文件详解

    前言: 前文介绍了django及pycharm的安装配置,后续开始说明django的详细配置及编写方式,本文主要说明django的配置文件设置,会结合实际问题及使用场景进行说明,本文中只介绍常用的及一 ...

最新文章

  1. IE下的优秀js调试工具Companion.JS
  2. 系统优化怎么做-Linux系统配置优化
  3. 消费类电子认证测试资料清单
  4. 计算机一级繁体字转换,繁体字转换器
  5. python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. rebase冲突解决
  7. 漫画:大厂总体 SaaS 化部署,到底什么是 IaaS、PaaS 和 SaaS?
  8. 【信息系统项目管理师】第10章 上篇-项目沟通管理 知识点详细整理
  9. vue个人学习(三)----组件
  10. CentOS Apache服务器配置https
  11. 通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译
  12. CDliux--minidwep 无线密码渗透测试
  13. Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938/CNVD-2020-10487)
  14. 什么是 95计费方式
  15. java 对接中国银联 云闪付
  16. 游戏全球化美术风格差异分析
  17. ESP32 入门笔记01:乐鑫ESP32-DevKitC开发板信息、开发环境搭建以及学资料准备
  18. linux里hba状态_Linux更换HBA卡后重新扫盘指令
  19. 向大家推荐一部小说《鉴鬼实录》
  20. 通过NASA卫星,带你看真实的亚马逊火灾

热门文章

  1. icmp协议_CCNA - Part7:网络层 - ICMP 应该是你最熟悉的协议了
  2. Discord是什么
  3. 一个人越来越沉默,即便是对着家人也无话可说,这究竟是怎么了?
  4. 成年男女间存在真正的友谊吗?
  5. 你听过哪些匪夷所思的故事?
  6. 华人、华侨、华裔之间究竟有什么区别?
  7. 遇到事情不计较就是善待自己
  8. 从自媒体引流到私域池
  9. 为什么很多国产手机模仿苹果手机的设计,唯独home键没人模仿?
  10. 华为的鸿蒙系统和苹果的操作系统有什么区别?