【问题标题】:Flask Print Not Working烧瓶打印不工作
【发布时间】:2017-07-24 19:16:31
【问题描述】:

如果我发送运行此程序以向我的 Flask 服务器执行 HTTP Post,我知道它会返回 200 响应:

import requests
import json
dump= '{"on": false}'
r = requests.post('http://127.0.0.1:5000', data=dump,
                  headers={'Content-Type': 'application/json'})

还有我的 Flask 服务器的代码:

from flask import Flask
from flask import request, jsonify
import requests

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def signal():
    if request.method == 'POST':
        content = request.get_json()
        return jsonify(content)
        print(jsonify(content))
        r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", jsonify(content))
    else:
         return 'Hello, world!'

if __name__ == '__main__':
    app.run(debug=True)

我想将数据打印到控制台,然后使用 HTTP PUT 将其发送到网络上的网桥。这些都不起作用,我不确定为什么。

【问题讨论】:

  • return 退出函数。您在return 之后尝试执行的任何操作都永远无法实现。因此,当代码到达return jsonify(content) 时,不管后面的代码是什么,该代码都不会被执行。

标签: python json flask


【解决方案1】:

你需要在函数的最后返回

@app.route('/', methods=['GET', 'POST'])
def signal():
    if request.method == 'POST':
        content = request.get_json()
        print(content)
        r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", content)
        return jsonify(content)
    else:
         return 'Hello, world!'

注意:您可能过度使用jsonify 函数,因为flask 中的jsonify() 函数返回flask.Response() 对象,而不是您将POST 或PUT 到另一个服务的JSON 字符串。

【讨论】:

  • 所以如果我将响应发送回发送设备,我只想使用 jsonify?
  • 对请求 HTTP 响应的客户端,是的。
  • 好的,很公平。我也应该理解退货的,抱歉。我的最后一件事是,这是他们保留'{"on": false}' 的 HTTP POST 的一种方式,因为撇号被删除,这意味着 PUT 不起作用。
  • 我不确定这意味着什么...我只是在解决您最初提出的问题。如果您还有其他问题,请点击 按钮进行提问。
猜你喜欢
  • 2016-04-18
  • 1970-01-01
  • 2016-04-19
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
相关资源
最近更新 更多