gpt4 book ai didi

forms - 来自表单数据的动态路由

转载 作者:行者123 更新时间:2023-12-03 17:30:50 24 4
gpt4 key购买 nike

我是 flask 新手,在从表单数据创建动态 url 时遇到问题。具体来自 WTFORMS 的 SelectField 的值。我的代码如下

我的表格看起来像这样

from flask_wtf import Form
from wtforms import SelectField
from wtforms.fields.html5 import DateField


class SelectEventForm(Form):
sports = SelectField(u'Select Sport')
start_after_date = DateField('Starts After Date')
start_before_date = DateField('Starts Before Date')

我的 Controller 有以下代码
@app.route('/event', methods=['GET', 'POST'])
def event():
form = SelectEventForm(request.form)
sports = betfair_client.call_rest_api('listEventTypes/', {"filter": {}})
form.sports.choices = []
for sport in sports:
for key in sport:
form.sports.choices.append((key, sport[key]))
return render_template('events.html', form=form)


@app.route('/event/<sports>', methods=['GET', 'POST'])
def event_select(sports):
#print request.form
#print request.form.get('sports')
return render_template('events_two.html')

html中的表格如下
<form  class="form-style-7" action="{{ url_for('event_select',     sports=form.sports.sport) }}" method="post">
<ul>
<li name="sport">
{{ form.sports.label}} {{ form.sports }}
</li>

<li>
{{ form.start_after_date.label }} {{ form.start_after_date }}
</li>
<li>
{{ form.start_before_date.label }} {{ form.start_before_date }}
</li>

&nbsp;
&nbsp;
<li>
<input type="submit" value="Next">
</li>
</ul>
</form>

我想做的是从 SelectField 中获取值以生成 url。已经坚持了一段时间。表单本身和下拉列表正确显示所有内容

谢谢

最佳答案

我会更改您的表单以发回它的生成页面,然后从那里处理逻辑。所以改变

{{ url_for('event_select', sports=form.sports.sport) }}

只是:
{{ url_for('event') }}

然后调整你的 event方法类似于:
from flask import redirect

@app.route('/event', methods=['GET', 'POST'])
def event():
form = SelectEventForm(request.form)

if form.validate_on_submit():
chosen_sport = form.sports.data
return redirect(url_for('event_select', sports=chosen_sport))

sports = betfair_client.call_rest_api('listEventTypes/', {"filter": {}})
form.sports.choices = []
for sport in sports:
for key in sport:
form.sports.choices.append((key, sport[key]))
return render_template('events.html', form=form)

我们所做的只是从提交的内容中获取,然后从表单元素中获取选择的运动,然后使用它将用户重定向到 event_select。以所选运动为参数的方法。

关于forms - 来自表单数据的动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com