【问题标题】:How to get the value of variable inside a function without using the return statement? [duplicate]如何在不使用return语句的情况下获取函数内部变量的值? [复制]
【发布时间】:2019-09-03 18:27:25
【问题描述】:

我正在使用 twilio api 使用 python 和烧瓶框架接收和发送 whatsapp 消息。问题是当我发送消息时,它会将内容存储在一个变量中,该变量在函数中声明,我想要该变量函数之外的值,但它只返回消息的响应。 我的目标是获取传入消息的值,根据该值运行一些代码,然后再次使用 whatsapp 消息响应用户。

我已经尝试过声明全局属性并尝试使用嵌套函数来回调变量的值,并将新变量声明为相同的获取值(函数内部的原始变量)msg = request.form.get('Body') 和消息= request.form.get('Body')(outside the function) 但它给出 RuntimeError: Working outside of request context.

app = Flask(__name__)

@app.route("/sms", methods=['POST'])
def sms_reply():
    msg = request.form.get('Body')
    resp = MessagingResponse()
    resp.message("Hello")
    return str(resp)

我希望根据传入的 whatsapp 消息的值运行更多代码。

【问题讨论】:

  • 所以你想要msg?使用可变对象,例如类或字典。
  • @Error-SyntacticalRemorse 是的!
  • TLDR:使用烧瓶session

标签: python-3.x flask twilio twilio-api twilio-programmable-chat


【解决方案1】:

如果您想要返回包含消息响应的消息,您需要创建一个包含这两个值的更复杂的类型,然后返回该对象。

from flask import jsonify
app = Flask(__name__)

class SmsReplyResult:
  def __init__(self, msg, other_data):
    self.msg = msg
    self.other_data = other_data

@app.route("/sms", methods=['POST'])
def sms_reply():
    msg = request.form.get('Body')
    result = SmsReplyResult(msg, "hello")
    return jsonify(result)

此示例假设调用者期望 json 作为响应

【讨论】:

  • 它给出一个错误 TypeError: Object of type SmsReplyResult is not JSON serializable.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2019-04-17
  • 1970-01-01
  • 2022-06-23
相关资源
最近更新 更多