版权声明:非诚勿扰 https://blog.csdn.net/kaikai0803/article/details/88528005
生成n位随机字符串
def get_rand_str(n):
"""
生成n位随机字符串
:param: n: 生成的位数
:return: string: String
"""
string = ''
for i in range(n): # 循环n次
temp = random.randint(1, 2) # 大小写随机
if temp == 1:
s = chr(random.randint(97, 122)) # 小写随机
else:
s = chr(random.randint(65, 90)) # 大写随机
string += s
return string
字典-XML 互转
def dic2xml(dic):
"""
参数字典dic转换为XML字符串
:param dic: 待转换的参数字典
:return: xml_data: xml格式数据
"""
xml_data = '<xml>\n' # xml字符串头
for k, v in dic.items():
temp = '<{0}>{1}</{0}>\n'.format(k, v) # 拼接当前标签 <k>v</k>
xml_data += temp # 更新xml字符串
xml_data += '</xml>' # xml字符串尾
return xml_data
from xml.etree.ElementTree import fromstring
def xml2dic(xml):
"""
xml数据转换为dict对象
:param xml: xml格式数据
:return: dic: 转换过后的字典对象
"""
root = fromstring(xml) # 生成根标签对象
dic = {} # 容纳参数的空字典
for i in root:
dic[i.tag] = i.text # 键值对应
return dic
生成二维码保存为本地图片
def make_qrcode(text, qrcode_name):
"""
此处调用草料二维码生成api
生成二维码并保存为本地图片
:param text: 二维码链接
:param qrcode_name: 二维码名字
:return: None
"""
if not os.path.exists('QR_CODE'):
os.mkdir('QR_CODE')
if not isinstance(text, str):
text = str(text)
if not isinstance(qrcode_name, str):
qrcode_name = str(qrcode_name)
res = requests.get('http:' + etree.HTML(
requests.get('https://cli.im/api/qrcode/code?text={}&mhid=vEHPDFvvmsghMHcrLNBTOao'.format(text)).text).xpath(
'//img[@id="qrcode_plugins_img"]/@src')[0])
with open('QR_CODE/' + qrcode_name + '.png', 'wb') as fp:
fp.write(res.content)
return 1
时间戳和datetime互换
def datetime2timestamp(datetime_obj):
# 将python的datetime转换为unix时间戳
timestamp_obj = time.mktime(datetime_obj.timetuple())
return timestamp_obj
def timestamp2datetime(timestamp_obj):
# 将unix时间戳转换为 python 的datetime
datetime_obj = datetime.datetime.fromtimestamp(timestamp_obj)
return datetime_obj
基于微信公众平台开发 生成签名
def get_sign(dic):
"""
生成签名
:param dic: 参与签名的参数字典
:return: sign: string
"""
params_list = sorted(dic.items(), key=lambda e: e[0], reverse=False) # 参数字典倒排序为列表
params_str = "&".join(u"{}={}".format(k, v) for k, v in params_list) + '&key=' + settings.KEY
# 组织参数字符串并在末尾添加商户交易密钥
md5 = hashlib.md5() # 使用MD5加密模式
md5.update(params_str.encode('utf-8')) # 将参数字符串传入
sign = md5.hexdigest().upper() # 完成加密并转为大写
return sign
查看视图函数运行时间的装饰器
def func_time(func):
"""
视图函数运行时间装饰器
:param func:
:return:
"""
def wrapper(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
end = time.time()
# logger.info(str(end - start), str(func.__name__))
logger.info(func.__name__)
print('访问时间:', datetime.datetime.now(), ' 访问接口:', func.__name__, (30 - len(func.__name__)) * ' ', '耗时:',
(end - start) * 1000, 'ms')
return res
return wrapper
定制响应对象
class BaseError(object):
# 封装报错类
error_no = 0
error_info = None
error_info_dev = None
def get_response(data=None, error_obj=BaseError):
"""
定制响应对象
:param data: 响应主数据
:param error_obj: 错误对象
:return: res: 包装后的响应对象
"""
content = {
'error_no': error_obj.error_no,
'error_info': error_obj.error_info,
'error_info_dev': error_obj.error_info_dev,
'data': data
}
# return HttpResponse(json.dumps(content))
return JsonResponse(content)