返回结构化数据
1 def ajaxReturn(info,data={}): 2 import json 3 info['data'] = data 4 return json.dumps(info)
递归tree
1 def get_tree(data,pid=0,level=0): 2 data_list = [] 3 for info in data: 4 if info['pid'] == pid: 5 info['level'] = level 6 info['name'] = '^-^ '*level + info['name'] 7 data_list.append(info) 8 data_list += get_tree(data, info['id'], level + 1) 9 return data_list
获取总页数
1 def get_total_page(total): 2 from flask import current_app 3 import math 4 try: 5 pagesize = current_app.config['PAGESIZE'] 6 except: 7 pagesize = 5 8 return math.ceil(total/pagesize)
分页试图函数
1 def getHtmlPage(page=1,url='',total=0): 2 ''' 3 * 获取分页的html内容 4 * url 跳转链接 5 * total 总条数 6 * p = 起始页码 7 ''' 8 from flask import current_app 9 import math 10 try: 11 pagesize = current_app.config['PAGESIZE'] 12 except: 13 pagesize = 5 14 # 总页数 15 pages = math.ceil(total/pagesize) 16 # 最多显示10个页码 17 _pageNum = 10 18 # 如果当前页面小于1 则为1,否则就是其值 19 page = 1 if page < 1 else page 20 # 如果当前页数大于总数页数,则为总页数 否则为其页数 21 page = pages if page > pages else page 22 # 总页数小于当前页 则为当前页 23 pages = page if pages < page else pages 24 25 # 计算开始页 26 _start = page - math.floor(_pageNum/2) 27 _start = 1 if _start < 1 else _start 28 29 # 计算结束页 30 _end = page + math.floor(_pageNum/2) 31 _end = pages if _end > pages else _end 32 33 # 显示当前的页码数 34 _currentPageNum = _end - _start + 1 35 36 # 如果当前页码数不够最大页码数,左右调整 37 # 左调整 38 if _currentPageNum < _pageNum and _start > 1 : 39 _start = _start - (_pageNum - _currentPageNum) 40 _start = 1 if _start < 1 else _start 41 _currentPageNum = _end - _start + 1 42 43 # 右调整 44 if _currentPageNum < _pageNum and _end < pages: 45 _end = _end + (_pageNum - _currentPageNum) 46 _end = pages if _end > pages else _end 47 48 # 嵌套html 49 _pageHtml = '<div class="dataTables_paginate paging_bootstrap"><ul class="pagination">' 50 if page > 1 : 51 _pageHtml += '<li><a class="prev" title="上一页" href="'+url+'&page='+str(page - 1)+'">«</a></li>' 52 for i in range(_start,_end+1): 53 if i == page: 54 _pageHtml += '<li><a class="active btn-info white">'+ str(i) +'</a></li>' 55 else: 56 _pageHtml += '<li><a href="' +url+ '&page=' +str(i)+ '">' +str(i)+ '</a></li>'; 57 if page < _end : 58 _pageHtml += '<li><a class="next" title="下一页" href="'+ url + '&page='+str(page + 1)+'">»</a></li>'; 59 if total < 1 : 60 _pageHtml += '<h4>暂无数据...</h4>' 61 _pageHtml += "</ul></div>" 62 # 返回值 63 return '' if pages < 1 else _pageHtml
生成一个随机数,六位随机数,不到六位,前面补0
1 def getUUID(start=1,end=1000,length=6): 2 import random 3 randnum = str(random.randint(start,end)) 4 if len(randnum) < length : 5 randnum = randnum.zfill(length) 6 return randnum
去除首尾空格和特殊符号
1 def xss_clean(raw,flag=''): 2 if flag == 'Integer': 3 xraw = int(raw.strip()) if raw else 0 4 else: 5 xraw = raw.strip().replace('<', '<').replace('>', '>') if raw else '' 6 return xraw
获取菜单函数
1 def getMenu(data,pid=0,deep=0): 2 tree = [] 3 for row in data: 4 if row['pid'] == pid: 5 row['deep'] = deep 6 row['child'] = getMenu(data,row['id'],deep+1) 7 tree.append(row) 8 return tree
存储上传图片
1 def save_images(images): 2 from datetime import datetime 3 import random 4 pics_url = [] # 图片存储路径 5 dir = 'app/static/images/questions/{}/' 6 for image in images: 7 try: 8 ext = '.'+image.filename.rsplit('.', 1)[1] 9 except: 10 ext = '.png' 11 path = dir.format(datetime.now().strftime('%Y-%m-%d')) 12 filename = datetime.now().strftime('%d%H%M%S') + '-' + str(random.randint(10000, 99999)) + ext 13 dir_exists(path) # 检查文件夹是否创建,若未创建,则创建 14 pics = path + filename 15 with open(pics,'wb') as fp: 16 fp.write(image.read()) 17 pics_url.append(filename) 18 return ';'.join(pics_url)