from flask import Flask, flash, render_template, session, request, redirect, url_for, jsonify from admin.studentinfo import * from flask import current_app as app from werkzeug.utils import secure_filename import os from hashlib import md5 from pathlib import Path from datetime import datetime # 设置允许的文件格式 ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp']) #判断文件格式 def allowed_file (filename): return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS #------------------学生信息管理------------------ @app.route('/studentmanage') def studentmanage(): if 'username' in session: studentlist = loadAllStudent() return render_template('admin/a_student_manage.html', results= studentlist) else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) #打开学生信息添加页面 @app.route('/newstudentinfo') def newstudentinfo(): if 'username' in session: return render_template('admin/a_student_edit.html', status="add") else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) #打开学生信息编辑页面 @app.route('/loadstudentforedit/', methods = ['POST','GET']) def loadstudentforedit(sid): if 'username' in session: studentinfo = loadStudentByID(sid) return render_template('admin/a_student_edit.html', studentinfo = studentinfo, status="edit") else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) @app.route('/editstudentinfo.do', methods = ['POST']) def editstudentinfo(): if request.method == 'POST': status = request.form['lbl_status'] SNameCN = request.form['txt_SNameCN'] SNameEN = request.form['txt_SNameEN'] UniversityNameCN = request.form['txt_UniversityNameCN'] UniversityNameEN = request.form['txt_UniversityNameEN'] MajorNameCN = request.form['txt_MajorNameCN'] MajorNameEN = request.form['txt_MajorNameEN'] SType = request.form['txt_SType'] SYear = request.form['txt_SYear'] Email = request.form['txt_Email'] SImage = request.form['txt_SImage'] SIntroduce = request.form['txt_SIntroduce'].strip('\'"') #或者用eval(request.form['txt_SIntroduce']) 把返回的json字符串两端的双引号去掉 SIntroduce = SIntroduce.replace('''"''', r'''\"''').replace("'", r"\'") SResearchwork = request.form['txt_SResearchwork'].strip('\'"') # 把返回的json字符串两端的双引号去掉 SResearchwork = SResearchwork.replace('''"''', r'''\"''').replace("'", r"\'") f = request.files['file_proimg'] proimg = "" if (f != None and f.filename != ""): proimg = uploadimage(f) if proimg == "": proimg = SImage if status == 'add': data = [SNameCN, SNameEN, UniversityNameCN, UniversityNameEN, MajorNameCN, MajorNameEN, SType, SYear, Email, proimg, SIntroduce, SResearchwork] i, msg = add_StudentInfo(data) if i > 0: flash('学生信息添加成功!') else: flash('学生信息添加失败!'+str(msg)) elif status == 'edit': SID=request.form['lbl_sid'] data = [SNameCN, SNameEN, UniversityNameCN, UniversityNameEN, MajorNameCN, MajorNameEN, SType, SYear, Email, proimg, SIntroduce, SResearchwork, SID] i, msg = update_Student(data) if i > 0: flash('学生信息修改成功!' + str(msg)) else: flash('学生信息修改失败!' + str(msg)) return redirect(url_for('studentmanage')) def uploadimage(f): #f = request.files['file_proimg'] if not (f and allowed_file(f.filename)): return "False" #jsonify({"error": 1001, "msg": """请检查上传的图片类型,仅限于png、PNG、jpg、JPG、bmp"}) digest = md5(f.filename.encode("utf-8")).hexdigest() suffix = Path(f.filename).suffix images_name = datetime.now().strftime('%Y%m%d%H%M%S') + f'{digest}{suffix}' #images_name = datetime.now().strftime('%Y%m%d%H%M%S') + '11' file_path = os.path.join(app.config['UPLOAD_FOLDER_IMG_Student'], images_name) f.save(file_path) return file_path #"Success" #jsonify(file_path) #查看学生 @app.route('/viewstudent/', methods = ['POST','GET']) def viewstudent(sid): if 'username' in session: studentinfo = loadStudentByID(sid) return render_template('admin/a_student_view.html', studentinfo = studentinfo) else: flash('登录失败, 请重新登录') return redirect(url_for('adminlogin')) #删除学生信息 @app.route('/delstudent/', methods = ['POST']) def delstudent(sid): i, msg = del_Student(sid) if i > 0: flash('学生信息删除成功!') else: flash('学生信息删除失败!%s' % str(msg)) return redirect(url_for('studentmanage'))