Python Flask:对新请求返回了相同的响应

时间:2018-10-31 20:43:34

标签: python python-3.x flask repeat

此处是Python新手。我有一个基本的Flask API,可以对汽车的品牌和型号进行价格检查。

预期行为: 目的是像这样向服务器发送GET请求:

http://127.0.0.1:5000//EndPoint1?CarMakeModel=ChevySilverado

响应将返回价格:25000美元

如果我再次提交这样的请求:

http://127.0.0.1:5000//EndPoint1?CarMakeModel=FordPinto

响应应返回价格:5000美元

观察到的错误行为: 当我对ChevySilverado发出GET请求(如上面的URL)时,它正确返回$ 25000。但是,当我为FordPinto发送第二个URL时,它再次返回$ 25000而不是$ 5000。 它将始终重复$ 25000作为输出。

当我在第二个请求URL上提交“ FordPinto”时,如何获得此Python代码以返回$ 5000?

这是我尝试过的代码:

#PriceCheck.py:

from Flask import request
PriceChecker=[]
Price=[]
PriceChecker= request.args.get('CarMakeModel')
if PriceChecker == 'ChevySilverado':
    Price = '$25000'
if PriceChecker == 'FordPinto':
    Price = '$5000'

#Run.py:

from flask import Flask
app = Flask(__name__)
@app.route('/EndPoint1')
def Response():
    from PriceCheck import PriceChecker
    return str(PriceChecker)
if __name__ == '__main__':
    app.run(debug=True)

1 个答案:

答案 0 :(得分:4)

由于Price是模块全局变量,因此在首次导入PriceCheck.py时仅设置一次。相反,您应该将代码包装在函数中的PriceCheck.py中,以便可以重复调用它:

新的PriceCheck.py

from Flask import request

def check_price():
    PriceChecker= request.args.get('CarMakeModel')
    if PriceChecker == 'ChevySilverado':
        Price = '$25000'
    if PriceChecker == 'FordPinto':
        Price = '$5000'
    # You also need to handle `PriceChecker` being other values!
    return Price

新的Run.py

from flask import Flask
from PriceCheck import check_price

app = Flask(__name__)

@app.route('/EndPoint1')
def Response():
    return check_price()

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