Как заставить акции iexfianace получать данные из данных формы? - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь получить цену акций от 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)

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Вы должны отправить входные данные формы, добавив submit = SubmitField() в свой InvestmentForm. Убедитесь, что вы передаете request.form в form = InvestmentForm(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)
0 голосов
/ 05 ноября 2018

Я думаю, что причина ошибки в том, что вы пытаетесь извлечь form.stockSymbol.data в запросе GET, когда пользовательский ввод недоступен. Попробуйте изменить свой код, чтобы он различал GET и POST, например:

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)
...