如何让 iexfianace 股票从表单数据中获取输入?

How to make iexfianace stock take an input from a form data?

我正在尝试从 iexfianance 获取股票价格。当我尝试 运行 时,我得到 ValueError: Please input a symbol or list of symbols。如何让 s=Stock() 从表单中获取输入?我试图将输入更改为字符串,但它已经是一个字符串,但没有用。请帮忙!!

class InvestmentForm(Form):
    stockSymbol = StringField('Stock Symbol', validators=[InputRequired(), Length(min=2, max=5 ,message='Please Enter Correct 
    symbol')])
    allotment = FloatField('Allotment', validators=[InputRequired()])
    finalSharePrice = FloatField('Final Share Price', validators=[InputRequired()])
    sellCommision = FloatField('Sell Commision',validators=[InputRequired()])
    initialSharePrice = FloatField('Initial Share Price', validators=[InputRequired()])
    buyCommission = FloatField('Buy Commission', validators=[InputRequired()])


@app.route("/",methods=['GET','POST'])
def index():
    form = InvestmentForm()
    userInput = form.stockSymbol.data
    s = Stock(userInput)
    print(s.get_price())
    return render_template('home.html',form=form)

我认为错误的原因是当用户输入不可用时,您尝试在 GET 请求中提取 form.stockSymbol.data。尝试更改您的代码,以便区分 GETPOST,如下所示:

from flask import request
@app.route("/",methods=['GET','POST'])
def index():
    form=investmentform()

    if request.method == 'POST':
        userInput = form.stockSymbol.data
        s = Stock(userInput)
        print(s.get_price())

    return render_template('home.html',form=form)

您必须提交表单输入数据,在您的InvestmentForm中添加一个submit = SubmitField()。确保在 form = InvestmentForm(request.form) 中传递 request.form 或仅使用 Flask-WTF.

class InvestmentForm(Form):
    submit = SubmitField()

@app.route("/", methods=['GET', 'POST'])
def index():
    form = InvestmentForm(request.form)
    if request.method == 'POST' and form.validate():
        user_input = form.stockSymbol.data
        s = Stock(user_input)
        print(s.get_price())
return render_template('home.html', form=form)