码迷,mamicode.com
首页 > 其他好文 > 详细

Django【模块】importlib,requests

时间:2017-09-26 17:49:00      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:nta   代码   item   定义   dir   theme   mono   get   request   

概要:
    模仿django中间件的加载方式
    importlib模块
    requests模块
 rsplit()
 
用实际使用的理解来解释两个模块
importlib模块:
        通常用于动态引入自定义模块,代码中module=importlib.import_module(module_path),module为引入的模块对象,module_path为包含模块路径和模块名的字符串。
requests模块:
        通常我们通过浏览器发送http请求,在python中,可以用requests模块来实现。
 
 
应用实例(两者一起应用实例)
需求:从settings配置文件加载所有插件,插件在src/plugins.nic目录下,分别有是单独文件,注意:django的中间件也是用这种方式加载。
settings配置
PLUGIN_ITEMS = {
    "nic": "src.plugins.nic.Nic",
    "disk": "src.plugins.disk.Disk",
}

API = "http://127.0.0.1:8000/api/server.html"
 
views代码
import sys
import os
import importlib
import requests
BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASEDIR)
from conf import settings

server_info = {}
for k,v in settings.PLUGIN_ITEMS.items():
    # 找到v字符串:src.plugins.nic.Nic,src.plugins.disk.Disk
    module_path,cls_name = v.rsplit(‘.‘,maxsplit=1) # rsplit,倒叙的split,maxsplit=1,第一个‘.‘
    module = importlib.import_module(module_path)
    cls = getattr(module,cls_name)
    obj = cls()
    ret = obj.process()
    server_info[k] = ret

requests.post(
    url=settings.API,
    data=server_info
)

 

tips:
module_path,cls_name = v.rsplit(‘.‘,maxsplit=1) 
# rsplit,倒叙的split,maxsplit=1,第一个‘.‘
 

 

Django【模块】importlib,requests

标签:nta   代码   item   定义   dir   theme   mono   get   request   

原文地址:http://www.cnblogs.com/lucaq/p/7597618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!