【问题标题】:Flask WTForms {{ form.input(value=something.something) }}烧瓶 WTForms {{ form.input(value=something.something) }}
【发布时间】:2022-01-20 00:33:36
【问题描述】:

我正在尝试渲染一个 html 表单并使用 sqlalchemy 传入一个表格行。因此,表单将显示所有填充行数据的输入字段,目的是编辑并将其发送回数据库。但不知何故,表单只显示两个输入字段,都是文本类型。整数字段和单选字段不显示行的每个对应值,尽管这些值存在并且不是无。

路线如下:

@app.route('/editar/<string:id>')
def hotel_edit(id):
    form = HotelForm()
    viaje = arribos.query.get(id)
    return render_template('edit_hotel.html', form=form, viaje=viaje)

这是显示 wtform 对象的 html 文件 + 试图让对象“viaje”显示值但没有运气:

{% block body %}
<div id="main_form">
    <form action="/" method="post" id="ingresos">
        {{ form.hidden_tag() }}
        <fieldset>
            <div class="checks" id="inout">
                {{ form.check.label }}
                {{ form.check(value=viaje.check) }}
            </div>
            <div class="horafecha">
                {{ form.fecha.label }}
                {{ form.fecha(value=viaje.fecha) }}
                {{ form.hora.label }}
                {{ form.hora(value=viaje.hora) }}
            </div>
            <div class="textbox">
                {{ form.vuelo.label(class="inputtext") }}
                {{ form.vuelo(class="inputtext", value=viaje.vuelo) }}
                {{ form.habitacion.label(class="inputtext") }}
                {{ form.habitacion(class="inputtext", value=viaje.habitacion) }}
                {{ form.huespedes.label(class="inputtext") }}
                {{ form.huespedes(class="inputtext", value=viaje.huespedes) }}
                {{ form.valijas.label(class="inputtext") }}
                {{ form.valijas(class="inputtext", value=viaje.valijas) }}
            </div>
            <div class="checks" id="puerto">
                {{ form.puerto.label(class="puertos") }}
                {{ form.puerto(class="puertos", value=viaje.puerto) }}
            </div>
            <div class="buttons">
                {{ form.enviar }}
            </div>
        </fieldset>
    </form>
</div>
{% endblock %}

这是表单(尚未设置样式): form

如您所见,大多数输入字段都缺少值。有谁知道如何解决这个问题?

另外:如果有帮助,我可以向您展示包含整个表单的类定义的 form.py 文件。

【问题讨论】:

    标签: python flask sqlalchemy flask-wtforms


    【解决方案1】:

    您可以在表单从您的路线中发送到 jinja 模板之前对其进行填充。它看起来像这样:

    @app.route('/editar/<string:id>')
    def hotel_edit(id):
        form = HotelForm()
        viaje = arribos.query.get(id)
        form.check.data = viaje.check
        form.fecha.data = viaje.fecha
        form.hora.data = viaje.hora
        ...
    
        return render_template('edit_hotel.html', form=form)
    

    然后您可以只引用表单字段而不传递值 arg。

    {% block body %}
    <div id="main_form">
        <form action="/" method="post" id="ingresos">
            {{ form.hidden_tag() }}
            <fieldset>
                <div class="checks" id="inout">
                    {{ form.check.label }}
                    {{ form.check() }}
                </div>
                <div class="horafecha">
                    {{ form.fecha.label }}
                    {{ form.fecha() }}
                    {{ form.hora.label }}
                    {{ form.hora() }}
                </div>
                <div class="textbox">
                    {{ form.vuelo.label(class="inputtext") }}
                    {{ form.vuelo(class="inputtext") }}
                    {{ form.habitacion.label(class="inputtext") }}
                    {{ form.habitacion(class="inputtext") }}
                    {{ form.huespedes.label(class="inputtext") }}
                    {{ form.huespedes(class="inputtext") }}
                    {{ form.valijas.label(class="inputtext") }}
                    {{ form.valijas(class="inputtext") }}
                </div>
                <div class="checks" id="puerto">
                    {{ form.puerto.label(class="puertos") }}
                    {{ form.puerto(class="puertos") }}
                </div>
                <div class="buttons">
                    {{ form.enviar }}
                </div>
            </fieldset>
        </form>
    </div>
    {% endblock %}
    

    【讨论】:

    猜你喜欢
    • 2013-03-16
    • 2016-05-03
    • 2016-01-23
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    相关资源
    最近更新 更多