Flask

pip install flask

from flask import Flask, request, jsonify
app = Flask(__name__)  # Flask 会依赖于<name>去判断从哪里找模板、静态文件。

@app.route('/index', methods=['GET'])
def index_get():
    '''
    默认只支持GET
    http://127.0.0.1:5000/index?username=admin&password=123456

    '''
    username = request.args.get('username', 'Guest')  # URL参数
    password = request.args.get('password', 'Guest')
    # post_name = request.form['username']  # 请求体
    # post_password = request.form['password']
    # post_json = request.json  # JSON格式的请求体
    print(username, password)
    # print(post_name, post_password)
    return username, password

@app.route('/hello')
def hello():
    return jsonify({'name': 'tyrael',
            'email': 'liqianglau@outlook.com'})  # 返回JSON格式的字符串;content-type:application/json

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/user/<username>')  # 变量
def show_user_profile(username):
    return 'User %s' % username

app.run(host='0.0.0.0', debug=True)

@app.route装饰器用于将URL路由到特定的函数。即访问URL时,会调用相应的函数。
url_for函数用于构建URL。

flask操作Redis

from flask import Flask, request, jsonify
import redis

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
app.config['JSONIFY_MIMETYPE'] = 'application/json;charset=utf-8'

redis_store = redis.Redis(
    host="127.0.0.1",
    port=6379,
    password="123456",
    db=1,
    decode_responses=True
)

@app.route('/')
def index():
    return '''
		<!DOCTYPE html>
		<html lang="zh-CN">
		<head>
			<meta charset="UTF-8">
			<meta name="viewport" content="width=device-width, initial-scale=1.0">
			<title>Redis 控制台</title>
			<style>
				*{margin:0;padding:0;box-sizing:border-box;font-family: "Microsoft Yahei"}
				body{background:#f5f7fa;padding:40px}
				.container{max-width:1600px;margin:0 auto}
				h2{text-align:center;margin-bottom:30px;color:#333}
				.box{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}
				.card{background:#fff;padding:20px;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,0.05);width:340px}
				.card h4{margin-bottom:12px;border-left:4px solid #409eff;padding-left:10px;color:#333}
				.item{display:flex;gap:6px;align-items:center;margin-bottom:8px;white-space:nowrap}
				input{flex:1;padding:6px 10px;border:1px solid #ddd;border-radius:6px;min-width:0}
				input:focus{border-color:#409eff;outline:none}
				button{padding:6px 12px;background:#409eff;color:#fff;border:none;border-radius:6px;white-space:nowrap}
				button:hover{background:#3189df}
			</style>
		</head>
		<body>
		<div class="container">
			<h2>Redis 可视化操作面板</h2>
			<div class="box">
				<div class="card">
					<h4>字符串</h4>
					<div class="item"><input id="sk" placeholder="key"><input id="sv" placeholder="value"><button onclick="set()">设置</button></div>
					<div class="item"><input id="gk" placeholder="key"><button onclick="get()">获取</button></div>
					<div class="item"><input id="dk" placeholder="key"><button onclick="del()">删除</button></div>
				</div>

				<div class="card">
					<h4>哈希</h4>
					<div class="item"><input id="hn" placeholder="哈希名"><input id="hk" placeholder="key"><input id="hv" placeholder="value"><button onclick="hset()">设置</button></div>
					<div class="item"><input id="hgn" placeholder="哈希名"><input id="hgk" placeholder="key"><button onclick="hget()">获取</button></div>
				</div>

				<div class="card">
					<h4>集合</h4>
					<div class="item"><input id="sk1" placeholder="key"><input id="sm" placeholder="成员"><button onclick="sadd()">添加</button></div>
					<div class="item"><input id="sk2" placeholder="key"><input id="sm2" placeholder="成员"><button onclick="srem()">删除</button></div>
					<div class="item"><input id="sk3" placeholder="key"><button onclick="smembers()">查看</button></div>
				</div>

				<div class="card">
					<h4>列表</h4>
					<div class="item"><input id="lk1" placeholder="key"><input id="lv1" placeholder="值"><button onclick="lpush()">左加</button></div>
					<div class="item"><input id="lk2" placeholder="key"><input id="lv2" placeholder="值"><button onclick="rpush()">右加</button></div>
					<div class="item"><input id="lk3" placeholder="key"><button onclick="lrange()">查看</button></div>
					<div class="item"><input id="lk4" placeholder="key"><input id="lv4" placeholder="值"><button onclick="lrem()">删除</button></div>
					<div class="item"><input id="lk5" placeholder="key"><input id="li" placeholder="索引" style="width:60px"><input id="lv5" placeholder="值"><button onclick="lset()">修改</button></div>
				</div>
			</div>
		</div>

		<script>
		function go(url, data) {
			const p = new URLSearchParams(data).toString();
			fetch(url+"?"+p).then(r=>r.text()).then(t=>alert("结果:\\n"+t));
		}

		function set(){go("/set",{key:document.getElementById("sk").value,value:document.getElementById("sv").value})}
		function get(){go("/get",{key:document.getElementById("gk").value})}
		function del(){go("/del",{key:document.getElementById("dk").value})}

		function hset(){go("/hset",{name:document.getElementById("hn").value,key:document.getElementById("hk").value,value:document.getElementById("hv").value})}
		function hget(){go("/hget",{name:document.getElementById("hgn").value,key:document.getElementById("hgk").value})}

		function sadd(){go("/sadd",{key:document.getElementById("sk1").value,member:document.getElementById("sm").value})}
		function srem(){go("/srem",{key:document.getElementById("sk2").value,member:document.getElementById("sm2").value})}
		function smembers(){go("/smembers",{key:document.getElementById("sk3").value})}

		function lpush(){go("/lpush",{key:document.getElementById("lk1").value,value:document.getElementById("lv1").value})}
		function rpush(){go("/rpush",{key:document.getElementById("lk2").value,value:document.getElementById("lv2").value})}
		function lrange(){go("/lrange",{key:document.getElementById("lk3").value})}
		function lrem(){go("/lrem",{key:document.getElementById("lk4").value,value:document.getElementById("lv4").value})}
		function lset(){go("/lset",{key:document.getElementById("lk5").value,index:document.getElementById("li").value,value:document.getElementById("lv5").value})}
		</script>
		</body>
		</html>
	'''

# ------------------- 字符串 -------------------
@app.route('/set')
def set_str():
    k, v = request.args.get('key'), request.args.get('value')
    redis_store.set(k, v)
    return f"{k} = {v} 设置成功"

@app.route('/get')
def get_str():
    k = request.args.get('key')
    return f"{k} = {redis_store.get(k)}"

@app.route('/del')
def del_key():
    k = request.args.get('key')
    redis_store.delete(k)
    return f"{k} 删除成功"

# ------------------- 哈希 -------------------
@app.route('/hset')
def hset():
    n, k, v = request.args.get('name'), request.args.get('key'), request.args.get('value')
    redis_store.hset(n, k, v)
    return f"{n} {k}={v} 保存成功"

@app.route('/hget')
def hget():
    n, k = request.args.get('name'), request.args.get('key')
    return f"{n} {k} = {redis_store.hget(n, k)}"

# ------------------- 集合 -------------------
@app.route('/sadd')
def sadd():
    k, m = request.args.get('key'), request.args.get('member', '').split(',')
    for i in m:
        if i: redis_store.sadd(k, i)
    return "集合添加成功"

@app.route('/srem')
def srem():
    k, m = request.args.get('key'), request.args.get('member', '').split(',')
    for i in m:
        if i: redis_store.srem(k, i)
    return "集合删除成功"

@app.route('/smembers')
def smembers():
    return jsonify(list(redis_store.smembers(request.args.get('key'))))

# ------------------- 列表 -------------------
@app.route('/lpush')
def lpush():
    k, v = request.args.get('key'), request.args.get('value').split(',')
    for i in v:
        redis_store.lpush(k, i)
    return f"左推 {v} 成功"

@app.route('/rpush')
def rpush():
    k, v = request.args.get('key'), request.args.get('value').split(',')
    for i in v:
        redis_store.rpush(k, i)
    return f"右推 {v} 成功"

@app.route('/lrange')
def lrange():
    return jsonify(redis_store.lrange(request.args.get('key'), 0, -1))

@app.route('/lrem')
def lrem_route():
    redis_store.lrem(request.args.get('key'), 0, request.args.get('value'))
    return "删除成功"

@app.route('/lset')
def lset():
    k, i, v = request.args.get('key'), int(request.args.get('index', 0)), request.args.get('value')
    redis_store.lset(k, i, v)
    return f"索引 {i} 已改为 {v}"

if __name__ == '__main__':
    app.run(debug=True)
posted @ 2026-04-28 16:13  WiseHYH  阅读(13)  评论(0)    收藏  举报