python - 烧瓶 request.args,无法正常工作
问题描述
我想使用request.args.get()
我的数据并将其记录到控制台中。所以,我希望控制台记录{username: "ani", room: "1"}
,但它只是打印出来{username: "ani", room: ""}
。这是我的 app.py-
from flask import Flask, render_template, request, redirect, url_for
from flask_socketio import SocketIO, join_room
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/chat')
def chat():
username = request.args.get('username')
room = request.args.get('room')
if username and room:
return render_template('chat.html', username=username, room=room)
else:
redirect(url_for('home'))
@socketio.on('join_room')
def handle_join_room(data):
app.logger.info("{} has joined room {}".format(
data['username'], data['room']))
join_room(data['room'])
socketio.emit('join_room_announcement', data)
if __name__ == '__main__':
socketio.run(app, debug=True)
这是我的chat.html-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Chat App</title>
</head>
<body>
<h1>Welcome to room {{ room }}</h1>
<div id="messages"></div>
<form>
<input type="text" placeholder="Enter your message here" />
<button type="submit">Send</button>
</form>
</body>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.1/socket.io.js"
integrity="sha512-oFOCo2/3DtjrJG4N27BjSLQWoiBv171sK6a+JiWjp/7agxC2nCUP358AqzxkBUb5jX8g6CYLPdSKQTbC0weCwA=="
crossorigin="anonymous"
></script>
<script>
const socket = io.connect('http://127.0.0.1:5000/');
socket.on('connect', () => {
socket.emit('join_room', {
username: '{{ username }}',
room: '{{ id }}',
});
});
socket.on('join_room_announcement', (data) => {
console.log(data);
});
</script>
</html>
它也在终端中执行此操作,说明ani has joined room
何时应该说出房间 ID。
Welcome to {{ Room {{ room }}
仍然可以在 chat.html 中使用,因为它向我显示了那里的房间 ID。请帮忙。如果您需要更多信息,可以发表评论。
解决方案
在您的 HTML 脚本块中,您尝试通过变量名称 id 访问房间,如下所示
room: '{{ id }}',
但是在烧瓶中,您将值设置为房间。所以在下面使用
room: '{{ room }}',
以上更改将解决 console.log 问题和终端日志记录问题。
推荐阅读
- solr - SOLR ,将函数应用于查询中的参数
- google-app-engine - 503 谷歌应用引擎中的服务不可用
- scala - 如何将 for-yield 循环与 if/else 构造相结合
- php - Ion Auth in_group() - 多个组(按 id)
- javascript - 如何在 JavaScript 中将此日期字符串转换为毫秒
- c++ - 如何在一个 qt qml 窗口中运行和显示 4 个可执行文件?
- javascript - 当条件为真时,cancelAnimationFrame() 不起作用 - JS Canvas
- rest - 如何从 SOAP (JIRA 6) 迁移到 REST Api (JIRA 7)
- c# - c#Excel相对FormulaR1C1不起作用
- dart - 如何在 Dart 或 Flutter 中将日期转换为儒略日期?