首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python Flask WTF中从SelectField中获取用户选择的值?

如何在python Flask WTF中从SelectField中获取用户选择的值?
EN

Stack Overflow用户
提问于 2018-08-09 06:10:27
回答 3查看 5.2K关注 0票数 2

下面是我写的代码片段

MainPage.py

代码语言:javascript
复制
from flask import Flask, render_template,url_for,request, redirect
from form import SearchForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey1234'


@app.route("/")
@app.route("/home", methods=['GET', 'POST'])
def home():
    forms = SearchForm()
    return render_template('home.html', title='Home', forms=forms)

@app.route("/about")
def about():
    return render_template('about.html', title='About')


if __name__ == '__main__':
    app.run(debug=True)

form.py

代码语言:javascript
复制
from flask_wtf import FlaskForm
import Get_Test_Suite
from wtforms.fields import SelectField, SubmitField
from wtforms.fields.html5 import DateField
from wtforms.validators import DataRequired


class SearchForm(FlaskForm):
    test_suite_list = Get_Test_Suite.get_test_suite()
    suite_list = []
    for i in test_suite_list:
        suite_list.append((i, i))
    test_suite_selected = SelectField('Test Suite Name', choices=suite_list)

    test_module_list = Get_Test_Suite.get_module_name()
    module_list = []
    for j in test_module_list:
        module_list.append((j, j))
    test_module_selected = SelectField('Test Module Name', choices=module_list,validators=[DataRequired()])
    date_selected = DateField('Date', format='%m-%d-%Y')
    status = SelectField('Status', choices=[('Active', 'Active'), ('Closed', 'Closed')])
    submit = SubmitField('Submit')

home.html

代码语言:javascript
复制
{% extends "layouts.html" %}
{% block content %}
   <div class = "content-section">
       <form method="POST" action="">
           {{forms.hidden_tag()}}
           <fieldset class="form-group">
               <legend class ="border-bottom mb-4">
                   <center>SEARCH TEST FAILURE STATUS</center>
               </legend>
               <div class="form-group">
                    {{forms.test_suite_selected.label(class="form-control-label")}}
                    {{forms.test_suite_selected(class="form-control form-control-lg")}}
               </div>
               <div class="form-group">
                    {{forms.test_module_selected.label(class="form-control-label")}}
                    {{forms.test_module_selected(class="form-control form-control-lg")}}
               </div>
               <div class="form-group">
                    {{forms.date_selected.label(class="form-control-label")}}
                    {{forms.date_selected(class="form-control form-control-lg")}}
               </div>
               <div class="form-group">
                    {{forms.status.label(class="form-control-label")}}
                    {{forms.status(class="form-control form-control-lg")}}
               </div>
           </fieldset>
            <div class="form-group">
                    {{forms.submit(class="btn btn-outline-info")}}
            </div>
       </form>
   </div>
{% endblock content %}

我在home.html中创建了许多下拉列表,如何获取用户从每个下拉列表中选择的数据并将其打印出来?我正在尝试创建一个用户友好的web应用程序,其中用户将从下拉列表中选择值,应用程序将从数据库中提取相应的数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-09 06:18:39

你有没有试过把“选择”转换成字典?然后,您可以获取密钥表单数据的值。可能是这样的(对于你的“状态”SelectField):

value = dict(form.status.choices).get(form.status.data)

票数 0
EN

Stack Overflow用户

发布于 2018-08-10 14:09:50

代码语言:javascript
复制
@app.route("/")
@app.route("/home", methods=['GET', 'POST'])
def home():
    forms = SearchForm()
    if request.method == 'POST':
        print(forms.field_name.data) # <- prints to console.
        # to print to web convert to variable and render with jinja2
        # return render_template('display.html', field_name=forms.field_name.data)
    return render_template('home.html', title='Home', forms=forms)
票数 1
EN

Stack Overflow用户

发布于 2019-12-20 03:29:42

我相信你已经找到了解决方案,但这是为了下一代。您需要在select标记中插入值的名称,而不是在options标记中。

示例:

代码语言:javascript
复制
<select name="sServer">

  {% for server in servers %}
  <option  value="{{server}}">{{server}}</option>
  {% endfor %}

</select>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51756351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档