项目目录结构
开发调试环境
开发环境中启动的web服务是由flask内置的web服务器来提供的,所以服务启动的时候监听的网卡和端口是在项目中的app.py中进行指定
from flask import Flask,render_template,request,redirect,session from flask import jsonify,abort,json,make_response,send_from_directory,send_file from flask_bootstrap import Bootstrap from main import userhandler from main import msgconfig as m import os from urllib.parse import unquote,quote app = Flask(__name__) bootstrap = Bootstrap(app) @app.route('/index',methods=['GET']) def index(): return send_file("static/pages/sitetable.html") @app.route('/') def main(): return send_file("static/pages/sitetable.html") @app.route('/login',methods=['POST']) def login(): loginame = request.form.get('loginuser') loginpwd = request.form.get('loginpwd') result = userhandler.checkuser(loginame, loginpwd) if result: session['user'] = {'user': loginame} m.loginmsg="" return redirect("/index") m.loginmsg="error" return redirect("/") @app.route('/site',methods=['GET']) def get_sites(): sites = userhandler.get_sitesexcelfile() return jsonify({'sites': sites}) @app.route('/phone/site',methods=['GET']) def get_phonesites(): sites = userhandler.get_sitesyamlfile() return jsonify({'sites': sites}) @app.route('/upload',methods=['POST']) def upload(): f = request.files['file'] userhandler.upload_excelfile(f) return "success" @app.route('/downsite',methods=['GET']) def downtxt(): return send_from_directory('static/files/','sites.xlsx', as_attachment=True) @app.route('/initsites',methods=['POST']) def uploadtxt(): f = request.files.get('myfile') if f: userhandler.upload_sitesexcel(f) return send_file("static/pages/sitetable.html") else: return "error" @app.route('/initdir',methods=['GET']) def initexecledir(): userhandler.initexceldir() return "success" @app.route('/excellist',methods=['GET']) def getexcellist(): sitename = request.args.get("sitename") templateName = request.args.get("templateName") sitename= unquote(unquote(sitename)).encode('utf-8').decode('utf-8-sig') filelist = userhandler.getexcellist(sitename, templateName) return jsonify(filelist) @app.route('/uploadexcel',methods=['POST']) def uploadexcel(): f = request.files.get('myfile') sitename = request.form.get('sitename') templateName = request.form.get("templateName") userhandler.upload_excelfile(f, sitename, templateName) return send_file("static/pages/exceltable.html") @app.route('/deletefile',methods=['GET']) def deletefile(): sitename = unquote(unquote(request.args.get("sitename"))) filename = unquote(unquote(request.args.get("filename"))) templateName = request.args.get("templateName") userhandler.deletefile(sitename, filename, templateName) return "success" @app.route("/renamebase",methods=['GET']) def renamefile(): sitename = unquote(unquote(request.args.get("sitename"))) filename = unquote(unquote(request.args.get("filename"))) templateName = request.args.get("templateName") userhandler.renamefile(sitename, filename, templateName) return "success" @app.route("/baksite",methods=['GET']) def baksite(): userhandler.sitebak() return "success" @app.route('/phone/save',methods=['POST']) def phonesaveexcel(): sitename = request.form.get('sitename') sitename = unquote(unquote(sitename)) data = request.form.get("data") userhandler.save_phoneexcel(sitename, data) return "success" @app.route('/phone/basedata',methods=['GET']) def getbasedatabyexcel(): sitename = request.args.get("sitename") sitename = unquote(unquote(sitename)) return userhandler.get_phonebasedata(sitename) @app.route('/phone/savect',methods=['POST']) def phonesavect(): sitename = request.form.get('sitename') sitename = unquote(unquote(sitename)) data = request.form.get("data") userhandler.save_phoneexcelct(sitename, data) return "success" @app.before_request def process_request(): pass @app.after_request def process_response(response): response.headers['Access-Control-Allow-Origin'] = "http://192.168.0.1:81" response.headers["Access-Control-Allow-Credentials"]="true"; return response app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' if __name__ == '__main__': app.run(host="0.0.0.0", port=5000, debug=True)