from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render import json import datetime from Niko import settings import os from PIL import Image class DateEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, datetime.date): return obj.strftime("%Y-%m-%d") else: return json.JSONEncoder.default(self, obj) def qs2json(querySet): qdict = [] for i in querySet: qdict.append(i) qJson = {} qJson = json.dumps(qdict, cls=DateEncoder) print(qJson) return qJson def qs2dict(querySet): result = [] for i in querySet: result.append(i) return result # 验证用户登录状态 def checkLoginUser(request): try: request.session['loginID'] request.session['loginUser'] request.session['loginNickname'] return True except Exception as e: print(e) return False # 获取session def getSession(request, session): try: sessionName = request.session[session] return sessionName except: return None # 检验session id的有效性 def checkSession(request, session): try: sessionName = request.session[session] return True except: return False def checkGET(request, GET): try: result = request.GET[GET] return True except Exception as e: print(e) return False def checkPOST(request, GET): try: result = request.POST[GET] return True except: return False # 验证checkIn的组织者是否为登录的用户 def checkCorrectO_ID(request, ID): checkSession(request, 'loginID') if ID != getSession(request, 'loginID'): return False else: return True # 上传文件 def upload_file(request, filename, prefix, suffix='', sub_folder='user_upload', max_width=1200): try: file_name = request.FILES.get(filename) ext_file_name = get_ext(file_name) save_filename = str(prefix) + suffix + '.' + ext_file_name to_path = os.path.join(settings.BASE_DIR, 'checkIn', settings.MEDIA_STORAGE, sub_folder) to_file = os.path.join(to_path, save_filename) # to_path = to_path.replace('\\', '/') # to_file = to_file.replace('\\', '/') if not os.path.exists(to_path): os.makedirs(to_path) destination = open(to_file, 'wb+') for chunk in file_name.chunks(): destination.write(chunk) destination.close() picture_resize(to_file, max_width) return save_filename except Exception as e: print(e) return None # 图片压缩 # filename 文件名 # max_width 最大宽度,自动计算高度 def picture_resize(filename, max_width=1200): image = Image.open(filename) w, h = image.size if w > max_width: # 如果宽度大于预定值就缩小比例 zoom = max_width / w resize_h = round(zoom * h) resize_image = image.resize((max_width, resize_h), Image.ANTIALIAS) resize_image.save(filename) # 获取文件扩展名 def get_ext(filename): filename_2 = str(filename).split('.') return filename_2[-1]