【问题标题】:Flask request.args,get not working properly烧瓶 request.args,无法正常工作
【发布时间】:2021-02-09 04:14:23
【问题描述】:

我想使用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>

当它应该说房间 ID 时,它也会在终端说 ani has joined room 时这样做。

Welcome to {{ Room {{ room }} 仍然可以在 chat.html 中使用,因为它会显示那里的房间 ID。请帮忙。如果您需要更多信息,可以发表评论。

【问题讨论】:

    标签: python flask socket.io


    【解决方案1】:

    在您的 HTML 脚本块中,您尝试通过变量名 id 访问房间,如下所示

    room: '{{ id }}',
    

    但在烧瓶中,您将值设置为房间。所以在下面使用

    room: '{{ room }}',
    

    以上更改将解决 console.log 问题和终端日志记录问题。

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2018-02-02
      相关资源
      最近更新 更多