You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Flask项目报'str'对象无'route'属性错误,如何解决?

错误原因
  • 你在实例化Flask应用对象时语法错误,现有代码app = (__name__)直接将字符串__name__赋值给了app变量,而没有调用Flask类初始化,导致app是字符串类型,自然没有route属性。
  • 代码还有一处隐藏错误:请求名言接口时误用了Flask的request对象调用get方法,实际应该用你导入的requests库发送HTTP请求。
修正后的完整代码
from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse

# 修正:调用Flask类初始化应用对象
app = Flask(__name__)
@app.route('/mybot',methods=['POST'])
def mybot():
    incoming_message = request.values.get('Body','').lower()
    resp = MessagingResponse()
    msg = resp.message()
    responded = False
    if 'hi' in incoming_message:
        msg.body('Hello, iam luja')
        responded = True
    if 'quotes' in incoming_message:
        # 修正:用requests库发送get请求,而非Flask的request对象
        r = requests.get('https://api.quotable.io/random')
        if r.status_code == 200:
            data = r.json()
            quote = f'{data["content"]}({data["author"]})'
        else:
            quote = 'not able to retrieve'
        
        msg.body(quote)
        responded = True
    if 'who are you' in incoming_message:
        msg.body('Hi i am Bot')
        responded = True
    if not responded:
        msg.body('not able to return the msg')
    
    return str(resp)

if __name__ == '__main__':
    app.run()
修改说明
  1. 将app = (__name__)替换为app = Flask(__name__),完成Flask应用对象的初始化,此时app才具备route等Flask应用内置的属性和方法。
  2. 将r = request.get('https://api.quotable.io/random')替换为r = requests.get('https://api.quotable.io/random'),正确调用第三方请求库发送网络请求,避免后续运行到请求名言逻辑时报错。

修改完成后重新运行代码即可正常启动服务。

内容的提问来源于stack exchange,提问作者lewis machilika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:06:03