首页 > 解决方案 > 使用 Flask wtf_form 根据 RadioField 选择显示/隐藏输入字段或 div

问题描述

我正在尝试使用 Flask 构建网站,但找不到一个问题的解决方案。我正在尝试根据 RadioFeild 选择隐藏或显示输入字段。此外,如果输入字段显示,它必须是必需的。除了知道选择了哪个 RadioField 选项之外,我实际上一切正常。我可以在 127.0.0.1:5000 上加载页面时看到表单,我可以看到 RadioField 有 2 个选择:是和否,但是当我单击是时,没有任何更改,隐藏的输入字段仍然没有显示。请帮忙!

app.py

class MyClass(FlaskForm):
    my_field = RadioField("bla-bla-bla", choices=[('Yes', 'Yes'), ('No', 'No')], validators  [InputRequired()])

@app.route("/some_page")
def some_page():
    form = MyClass()
    return render_template("some_page.html", form=form)



_render_field.html

{% macro render_radio_field(field) %}
<div class="form__item">
    <label class="form__label">{{field.label.text }}</label>
    <div class="form-group">
        {{ field(class_='form__input', **kwargs)|safe }}
        {% for subfield in field %}
            <div class="form__item">
                <label>
                    {{ subfield }}
                    {{ subfield.label.text }}
                </label>

            </div>
        {% endfor %}
    </div>
</div>
{% endmacro %}


some_page.html

{% from "_render_field.html" import render_field, render_radio_field %}
{% extends "layout.html" %}
{% block title %}My Title{% endblock %}
{% block content %}
    <div style="width:600px; margin:0 auto;">
        <h3>Some Text</h3>
        <form class="form" action="{{url_for('some_page')}}" method="POST">
            {% from "_render_field.html" import render_field, render_radio_field %}
            {{ form.csrf_token }}

            {{ render_field(my_field, title="", style="list-style:none") }}
            {% if form.my_field.option == "Yes" %}
                {{ render_field(form.some_other_StringField, placeholder="Please explain:",  title="") }}
            {% endif %}


            <input type="submit" name="" value="login" class="form__btn">
        </form>
    </div>
{% endblock %}

标签: flaskjinja2flask-wtformshidden-field

解决方案


推荐阅读