【问题标题】:How to make iexfianace stock take an input from a form data?如何让 iexfinance 股票从表单数据中获取输入?
【发布时间】:2018-11-05 16:14:22
【问题描述】:

我正在尝试从 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)

【问题讨论】:

  • s = Stock() 中的Stock 究竟是什么?一个函数?她在做什么?你是怎么写的?
  • 它将股票代码作为 Stock('MSFT')。它是来自 iexfinance pypi.org/project/iexfinance的函数
  • 类名应该是 CamelCase 即InvestmentForm

标签: python python-3.x flask wtforms


【解决方案1】:

您必须提交表单输入数据,在您的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)

【讨论】:

    【解决方案2】:

    我认为错误的原因是当用户输入不可用时,您尝试在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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 2015-06-11
      • 2017-10-25
      • 2021-03-15
      • 1970-01-01
      相关资源
      最近更新 更多