django的配置文件字符串是怎么导入的?
写在开头:
每个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的配置文件字符串是怎么导入的?相关推荐
- springboot yaml/yml配置文件字符串换行
前言 springboot 2.1.1.RELEASE yaml配置文件字符串换行 需要把RSA公钥放到配置文件中,因字符串太长,为了方便维护,将公钥换行. publicKey: "MIIB ...
- django 使用配置文件实现登录方式(人脸、密码、刷卡、指纹等)的自定义选择
问题引出 网站登录系统,目前开发了人脸识别登录(见我写的博文).账号密码登录.刷卡登录三个功能,后期可以扩展指纹登录等. 但是对于不同的应用场景需要不同的登录方式,因此针对不同场景定制系统很有必要.比 ...
- 【django】配置文件
1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 当前⼯程的根⽬录,Django会依 ...
- php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码
<Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...
- Python Django 生成随机字符串UUID的使用示例
- django新建utils文件夹与导入方法
首先在主目录下创建utils文件夹(与manage.py在同一个目录) 右键mark为source root 在views中导入时用: from utils import xxxx
- $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器drf版本控制
1 importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...
- excel 导入 sqlserver 字符串被截取为255长度解决方案
原文出处: http://blog.csdn.net/xiaoma0529/article/details/21336535 excel表格导入sqlserver数据表中 内容被截取为255长度的字符 ...
- django整体文件结构、配置文件详解
前言: 前文介绍了django及pycharm的安装配置,后续开始说明django的详细配置及编写方式,本文主要说明django的配置文件设置,会结合实际问题及使用场景进行说明,本文中只介绍常用的及一 ...
最新文章
- IE下的优秀js调试工具Companion.JS
- 系统优化怎么做-Linux系统配置优化
- 消费类电子认证测试资料清单
- 计算机一级繁体字转换,繁体字转换器
- python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...
- rebase冲突解决
- 漫画:大厂总体 SaaS 化部署,到底什么是 IaaS、PaaS 和 SaaS?
- 【信息系统项目管理师】第10章 上篇-项目沟通管理 知识点详细整理
- vue个人学习(三)----组件
- CentOS Apache服务器配置https
- 通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译
- CDliux--minidwep 无线密码渗透测试
- Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938/CNVD-2020-10487)
- 什么是 95计费方式
- java 对接中国银联 云闪付
- 游戏全球化美术风格差异分析
- ESP32 入门笔记01:乐鑫ESP32-DevKitC开发板信息、开发环境搭建以及学资料准备
- linux里hba状态_Linux更换HBA卡后重新扫盘指令
- 向大家推荐一部小说《鉴鬼实录》
- 通过NASA卫星,带你看真实的亚马逊火灾