1
我一直在處理一個表單,它將數據發送到一個刮板並同時從表單輸入中生成一個URL。返回的模板完美無瑕,但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
我想它看起來就像這樣:
http://localhost/options/ABC
Form類:
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>
任何幫助,將不勝感激。
只是給了一個鏡頭,它仍然給我的亂碼網址。不過謝謝你的想法。 – brohemian 2014-09-06 23:30:46
嗯,也許它必須在url_for調用中使用symbol = options_form.symbol。我以前沒有使用WTForms,但也許它需要像symbol = options_form.symbol.text或.value或其他東西 – pgorsira 2014-09-06 23:35:36
試過這樣(在WTForms中它是.data)。當我這樣做時,帶有表單本身的頁面(索引視圖)將不會加載 - 它給了我一個werkzeug.routing.BuildError消息。任何其他想法?無論哪種方式,再次感謝您花時間考慮這一點。 – brohemian 2014-09-06 23:44:11