@app.route(‘/mybot’,метод=[‘POST’]) Ошибка атрибута: объект » str » не имеет атрибута «маршрут»

#python #flask

Вопрос:

Я пытаюсь использовать флэш-приложение, ниже приведен мой код, который я следую из учебника

 from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse

app = (__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:
        r = request.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__)
 

В противном случае приложению присваивается __name__ значение a str , и, как указано в сообщении об ошибке, у него нет route атрибута. В последнем случае приложению присваивается экземпляр Flask() , у которого есть требуемый route атрибут.

Комментарии:

1. Я изложил это дальше. Дайте мне знать, если это еще не ясно.