Python Django 实用小案例2
动态导入模块
Django返回序列化数据
动态导入模块
在Django里面,经常会看到一些方法或者类是动态导入,尤其是以settings文件为代表,经常把一些类放在里面动态调配,比如随便拿Django的settings里面的中间件来作为案例。

在PyCharm里面随便改一下其中一条发现是可以导入的

那是如何做到实现这样可配置的动态导入呢?以在做的一个CMDB为例。
首先创建一个config文件(不写在settings里面是为了区分出来,也怕万一碰巧。。。)
PLUGINS_DICT = {
'basic': 'api.service.asset.HandleBasic',
'nic': 'api.service.asset.HandleNic',
'memory': 'api.service.asset.HandleMemory',
'disk': 'api.service.asset.HandleDisk',
}
config
代码通过设置规则动态导入
for k, v in config.PLUGINS_DICT.items():
# v = 'api.service.asset.HandleDisk'
module_path, cls_name = v.rsplit('.', 1)
# module_path = 'api.service.asset'
# cls_name = 'HandleDisk' # 先动态导入api.service.asset
# 再通过反射去获取对应的类, cls就是对应的类
cls = getattr(importlib.import_module(module_path), cls_name) # 拿到类可以实例化,这里因为是静态方法,所以不需要实例化直接用
response = cls.process(server_obj, server_info, None)
备注一下:列表给字符串赋值

Django返回序列化数据
通常通过ajax返回给前端的数据都是字典,需要序列化成json数据。正常请看下之前都是这样写
ret = {
'status': 400,
'message': '****'
}
import json
return HttpResponse(json.dumps(ret))
这里有一个看起来高大上一点的写法:
from django.http import JsonResponse
ret = {
'status': 400,
'message': '****'
}
return JsonResponse(ret)
另外还需提及的一点是,JsonResponse跟HttpResponse的导入位置不一样。
在django.shortcuts里面输入J提示,在django3.0这个导入会被移除,确实在http里面是有更多导入的,稍微记一下就好了。
Python Django 实用小案例2的更多相关文章
- Python 21 Django 实用小案例1
实用案例 验证码与验证 KindEditor 组合搜索的实现 单例模式 beautifulsoup4 验证码与验证 需要安装Pillow模块 pip stall pillow ...
- Python趣味实用小工具
代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...
- Python:通过一个小案例深入理解IO多路复用
通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import time start = time.time() ...
- Python的应用小案例
1.python统计文本中每个单词出现的次数: #coding=utf-8__author__ = 'zcg' import collectionsimport os with open('abc.t ...
- python数据分析实用小抄
1. python数据分析基础 2. numpy 3. Scikit-Learn 4. Bokeh 5. Scipy 6. Pandas 转载于:http://www.jianshu.com/p/ ...
- python 客户端点对点通信小案例
点对点通讯分为客户端和服务器,多个客户端通过服务器进行信息的交流 服务器端代码 service端 #!/usr/bin/env python # -*- coding:utf-8 -*- impor ...
- 6.Python使用Pandas小案例
1.使用以下命令引入Pandas和xlrd,引入成功后在pycharm的setting导入即可使用(pip3是由于个人python版本为3.6)==在dos命令行输入以下信息 pip3 install ...
- 15.Selenium+Python滑动解锁小案例
1.代码实现 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChai ...
- Turtle绘图——python简单上手小案例
Turtle绘图 Turtle模块提供了在二维平面上移动的环境. Turtle可以实现位置.航向和各种可能的状态和动作. import turtle as tu roo = tu.Turtle() # ...
随机推荐
- Django(十九)Ajax全套
参考博客:http://www.cnblogs.com/wupeiqi/articles/5703697.html 提交: - Form - Ajax 一.Ajax,偷偷向后台发请求 - XMLHtt ...
- 浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好)
一 CSRF是什么 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者X ...
- 利用SHAPEIT将vcf文件进行基因型(genotype)定相(phasing):查看两个突变是否来源于同一条链(染色体或父本或母本),two mutations carried by the same read
首先,下载SHAPEIT. 按照里面的步骤安装完后,将vcf文件进行基因型定相,分四步走. 第一步,将vcf文件转化为plink二进制文件(.bed, .bim, .fam). 这一步需要用到GATK ...
- org.apache.poi 读取数字问题
默认呢,POI读取单元格内容为数字的话,自动搞成Dubbo类型的,比如这样: String value1 = row.getCell(0).getNumericCellValue()+"&q ...
- 爬虫之requests请求库高级应用
1.SSL Cert Verification #证书验证(大部分网站都是https) import requests respone=requests.get('https://www.12306. ...
- python自动化开发-[第十二天]-前端html
今日概要: 前端基础之html 1.web服务器的本质: #!/usr/bin/python # -*- coding:utf-8 -*- import socket def handle_reque ...
- Storm常用的类
BaseRichSpout (消息生产者)BaseBasicBolt (消息处理者)TopologyBuilder (拓扑的构建器)Values (将数据存放到values ,发送到下个组件)Tupl ...
- ARM三级流水线
title: ARM三级流水线 tags: ARM date: 2018-10-14 16:57:10 --- 参考: ARM指令集E004armproc.chm ARM Architecture R ...
- 15、JDBC-CallableStatement
一.存储过程 创建 CREATE DEFINER=CURRENT_USER PROCEDURE `adder`(IN a int, IN b int, OUT sum int) BEGIN DECLA ...
- layui(六)——upload组件常见用法总结
layui中提供了非常简单的文件上传组件,这里写了一个上传图片的栗子,上传成功后返回图片在服务器的路径,并设置为页面中img的src属性.因为上传十分简单,没什么可说的,就直接上代码了. html代码 ...