Python 只能将字符串值粘贴到Flask WTF表单字段

Python 只能将字符串值粘贴到Flask WTF表单字段,python,flask,flask-wtforms,Python,Flask,Flask Wtforms,我试图让一个视图函数将十进制值(最终来自数据库)粘贴到WTF表单字段中。除非我将字段更改为字符串字段,否则该值不会显示。我是否需要额外的东西将数值粘贴到十进制字段中 我创建了一个小的,希望可以复制的例子来测试这个功能。它有一个字段,在加载页面时,该字段应在字段中粘贴一个值 最初我尝试使用十进制字段,并尝试粘贴一个随机数,但当呈现页面时,该数字不会显示。当字段更改为IntegerField或FloatField时,也会发生同样的情况 将表单字段更改为字符串字段时,值将在页面呈现时显示-但是这不是理

我试图让一个视图函数将十进制值(最终来自数据库)粘贴到WTF表单字段中。除非我将字段更改为字符串字段,否则该值不会显示。我是否需要额外的东西将数值粘贴到十进制字段中

我创建了一个小的,希望可以复制的例子来测试这个功能。它有一个字段,在加载页面时,该字段应在字段中粘贴一个值

最初我尝试使用十进制字段,并尝试粘贴一个随机数,但当呈现页面时,该数字不会显示。当字段更改为IntegerField或FloatField时,也会发生同样的情况

将表单字段更改为字符串字段时,值将在页面呈现时显示-但是这不是理想的解决方案,因为值将是字符串

routes.py

from flask import render_template, flash
from app import app
from app.forms import TestForm

@app.route('/',methods=['GET','POST'])
@app.route('/index/',methods=['GET','POST'])
def index():
    # define form
    test_form = TestForm()

    test_form.testfield.data = 10

    return render_template('sandbox_home.html',
        test_form = test_form
        )
from flask_wtf import FlaskForm
from wtforms import StringField,DecimalField

class TestForm(FlaskForm):
    testfield=StringField()
forms.py

from flask import render_template, flash
from app import app
from app.forms import TestForm

@app.route('/',methods=['GET','POST'])
@app.route('/index/',methods=['GET','POST'])
def index():
    # define form
    test_form = TestForm()

    test_form.testfield.data = 10

    return render_template('sandbox_home.html',
        test_form = test_form
        )
from flask_wtf import FlaskForm
from wtforms import StringField,DecimalField

class TestForm(FlaskForm):
    testfield=StringField()
sandbox\u home.html


我安全的地方
我的存在是为了将值粘贴到表单字段

{{test_form.hidden_tag()}} {{test_form.testfield()}}

如果输入类型正确,则无论字段类型如何,我都希望显示该值。我猜这是一个数据类型问题,但我不确定问题在哪里。

这里有一个最简单的示例,可以说明这一点:

从烧瓶导入烧瓶,呈现\u模板\u字符串
来自flask_wtf进口FlaskForm
从wtforms导入StringField、IntegerField、DecimalField
app=烧瓶(名称)
app.secret_key=“;lskjflksdjflsdkjfsd;lghdi9uawhj”
类别测试表格(烧瓶表格):
test_str=StringField()
test_int=IntegerField()
test_dec=DecimalField()
模板=“”“
我安全的地方
我的存在是为了将值粘贴到表单字段

{{test_form.hidden_tag()}} {{test_form.test_str()}} {{test_form.test_int()}} {{test_form.test_dec()} """ 如果名称=“\uuuuu main\uuuuuuuu”: #模拟处理请求 使用app.test\u request\u context(): test_form=TestForm() 测试形式测试结构数据=10 test\u form.test\u int.data=10 测试形式测试12月数据=10 #渲染模板并保存到文件,以便在浏览器中打开 以open(“test.html”、“w”)作为f: f、 写入(呈现模板字符串(模板,测试形式=测试形式))
它将呈现的模板保存到名为
test.html
的文件中,该文件如下所示:


我安全的地方
我的存在是为了将值粘贴到表单字段

以下是浏览器中的屏幕截图:


从呈现的模板中可以看到,WTForms不区分浏览器中不同类型的字段(即,它们都是
type=“text”
)。如果您能让我知道如何修改此脚本以重现您的错误,我很乐意再次查看。

我刚刚测试过,它工作得非常完美。您能告诉我您使用的是哪个版本的
FLASK
FLASK\wtf
?您是否考虑了
CamelCase
IntegerField
而不是
IntegerField
?@Tobin我使用的是
Flask 1.1.1
Flask_wtf 0.14.2
,看起来它们是最新的版本。我刚刚用
IntegerField
再次尝试,并再次检查了
CamelCase
,结果相同(字段中没有填充任何内容)。感谢您的详细回复。我修改了代码,一次添加了所有三种类型(十进制、字符串和整数)。重新启动本地服务器后,它工作了!我不确定错误在哪里(可能会重新启动服务器,尽管我以前多次这样做),但我会尝试进一步深入研究。您是否一直在调试模式下运行本地服务器,以便自动重新加载代码更改?也许你对不一致行为的看法是因为这种情况没有发生?