我一直在研究一个表单,它将数据发送到scraper,同时从表单输入生成URL。返回的模板工作得很完美,但是URL的更改最终给了我URL中的整个表单,我不知道为什么。在
URL的结果如下:
http://localhost/options/%3Cinput%20id%3D%22symbol%22%20name%3D%22symbol%22%20type%3D%22text%22%20value%3D%22%22%3E
我希望它看起来像这样:
^{pr2}$窗体类:
class OptionsForm(Form):
symbol = StringField('Enter a ticker symbol:', validators=[Required(), Length(min=1, max=5)])
submit = SubmitField('Get Options Quotes')
观点:
# Where the form data ends up
@app.route('/options/<symbol>', methods=['GET', 'POST'])
def options(symbol):
# Created this try/except so I could test functionality - for example, I can do 'localhost/options/ABC' and it works
try:
symbol = request.form['symbol']
except:
pass
return render_template('options.html', symbol=symbol, company_data=OS.pull_data(symbol, name=True))
# Where the form lives
@app.route('/', methods=['GET', 'POST'])
def index():
form = OptionsForm()
print(form.errors)
if form.validate_on_submit():
return redirect(url_for('options', symbol=form.symbol.data))
return render_template('index.html', options_form=form)
模板:
<div id="options_div">
<form method="POST" name="symbol_form" action="{{ url_for('options', symbol=options_form.symbol) }}">
{{ options_form.hidden_tag() }}
{{ options_form.symbol(size=10) }}
{{ options_form.submit(size=10) }}
</form>
任何帮助都将不胜感激。在
尝试将
enctype='multipart/form-data'
添加到表单标记中。您的表单似乎正在使用application/x-www-form-urlencoded
,这是默认值。在编辑好的,看看这个。当呈现模板时,该数据属性(在调用的url_中)中没有值。当不引用data属性时(如您最初的问题所示),您引用的是实际的form元素(这就是为什么您看到在url中传递的所有html)。以下是你的选择(我看到):
使用某种前端javascript将表单的action属性绑定到输入框中的值。像angular这样的东西会有帮助(但是如果你不使用它的任何其他特性的话,那就太过分了)。
只需要表单POST to/options(url中没有符号)。然后,从表单数据中获取symbol属性。
相关问题 更多 >
编程相关推荐