You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WT Forms从数据库取数后前端仅显示部分字段的问题排查

问题排查与修复

1. 前端模板的核心语法错误

你的模板里存在多处写法错误,是导致字段无法正常渲染的主要原因:

  • 错误写法:entry.day.data(class="form-control")、entry.date.data(class="form-control")
    .data是字段的值属性(比如字符串、日期对象),不是表单字段本身,不能通过调用它来生成带样式的表单控件。正确做法是直接调用字段实例。
  • 语法错误:entry.description }}></td> 多了一个多余的>,导致模板解析异常,直接影响后续所有字段的渲染。

2. 视图层FormField添加方式的优化

直接创建TimesheetEntryForm实例再添加到FieldList,可能出现字段初始化不完整的问题,建议通过form.entries.append_entry()直接生成条目后再赋值,避免潜在的实例化冲突。


修正后的代码

修正后的前端模板

{% for form in content.timesheets %}
    {% for entry in form.entries %}
    <tr>
        <td>{{ form.emp_id(class="form-control") }}</td>
        <td>{{ form.project_id(class="form-control") }}</td>
        <td>{{ entry.day(class="form-control") }}</td>
        <td>{{ entry.date(class="form-control") }}</td>
        <td>{{ entry.description(class="form-control") }}</td>
        <td>{{ entry.for_act(class="form-control") }}</td>
        <td>{{ entry.dev_hr(class="form-control") }}</td>
        <td>{{ entry.prod_hr(class="form-control") }}</td>
        <td>{{ entry.test_hr(class="form-control") }}</td>
        <td>{{ entry.meet_hr(class="form-control") }}</td>
        <td>{{ entry.total_hr(class="form-control") }}</td>
    </tr>
    {% endfor %}
{% endfor %}

优化后的视图逻辑

timesheets = []
for row in rows:
    form = TimesheetForm()
    form.emp_id.data = row['emp_id']
    form.project_id.data = row['project_id']
    # 通过FieldList的append_entry生成条目,再赋值
    entry = form.entries.append_entry()
    entry.day.data = row['day']
    entry.date.data = row['date']
    entry.description.data = row['description']
    entry.for_act.data = row['for_act']
    entry.dev_hr.data = row['dev_hr']
    entry.prod_hr.data = row['prod_hr']
    entry.test_hr.data = row['test_hr']
    entry.meet_hr.data = row['meet_hr']
    entry.total_hr.data = row['total_hr']
    timesheets.append(form)

额外说明

  • 如果仅需展示数据而非表单控件,可直接输出.data,比如{{ entry.description.data }},注意不要加调用括号。
  • 之前entry.date看似正常显示,是因为模板解析到错误的entry.description }}>时中断,而date字段在错误之前,所以能完成渲染;修正语法错误后,后续字段即可正常显示。

内容的提问来源于stack exchange,提问作者HellBanger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:35:10