import os import requests import sqlite3 from flask import g from flask import Flask, render_template, request, redirect, url_for, session,make_response,send_from_directory,jsonify from flask.views import MethodView from werkzeug.routing import BaseConverter from utils.login import login_quark from utils.tools import get_cnb_weburl # 数据库配置 DATABASE = 'database.db' def get_db(): db = getattr(g, '_database', None) if db is None: db = g._database = sqlite3.connect(DATABASE) db.row_factory = sqlite3.Row return db @app.teardown_appcontext def close_connection(exception): db = getattr(g, '_database', None) if db is not None: db.close() app = Flask(__name__) #app = Flask(__name__,template_folder='templates') #修改模板目录 app.jinja_env.auto_reload = True exlink_info = { "exlink_id":"1", "qrlimit":3, "driver":["quark","wechat"], "use_limit":0 } class PhoneConverter(BaseConverter): # 自定义路由转换器 regex = '1[3-9]\d{9}' class LiConverter(BaseConverter): # 自定义to_python转换器 def to_python(self, value): return value.split("+") app.url_map.converters["phone"] = PhoneConverter app.url_map.converters["li"] = LiConverter @app.route("/", methods=["GET", "POST"]) def index(): #return render_template("index.html") return render_template('index.html') # @app.route("/") # def phone(param): # return param # @app.route("/") # def uner_info(param): # return param #falsk中重定向 @app.route('/profile/') def proflie(): if request.args.get('name'): return '个人中心页面' else: # return redirect(url_for('login')) return redirect(url_for('index'),code=302) @app.route('/demo2') def demo2(): resp = make_response('make response测试') resp.headers['itbaizhan'] = 'Python' resp.status = '404 not found' return resp @app.route('/login',methods=['POST']) def login(): # 获取POST请求中的JSON数据 data = request.get_json() token = data.get('token') if not token: print('缺少token参数') return jsonify({"status": False, "message": "缺少token参数"}) status = login_quark(token) return jsonify({"status": status}) @app.route('/exlink/') def qrlink(id): info = exlink_info return info @app.route('/admin/') def admin(): return render_template('admin.html') class Exlink(MethodView): def get(self): db = get_db() cursor = db.cursor() cursor.execute('SELECT * FROM exlinks') exlinks = cursor.fetchall() return jsonify([dict(row) for row in exlinks]) def post(self): data = request.json db = get_db() cursor = db.cursor() cursor.execute(''' INSERT INTO exlinks (exlink_id, qr_limit, drivers, use_limit) VALUES (?, ?, ?, ?) ''', ( data.get('exlink_id'), data.get('qr_limit', 3), data.get('drivers', '["quark","wechat"]'), data.get('use_limit', 0) )) db.commit() return jsonify({"status": True, "message": "success"}) app.add_url_rule('/admin/exlink', view_func=Exlink.as_view('exlink')) if __name__ == "__main__": weburl = get_cnb_weburl(5000) print("Run_url:",weburl) app.config.from_pyfile("config.py") app.run(host="0.0.0.0")