gpt4 book ai didi

python - Flask-WTF 表单填充整数字段和单选字段

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:24 26 4
gpt4 key购买 nike

我正在尝试在其中一个字段显示“MATH& 142”的情况下填写完整表格。这似乎适用于某些领域而不适用于其他领域。

代码如下:

def formFill():
@app.route('/formFill', methods=['GET', 'POST'])
form = cifForm()
if form.courseNum.data == 'MATH& 142':
form.courseTitle.data = 'Precalculus II : Trigonometry'
form.publishInCollegeCatalog.data = True #NOT WORKING - Radio Field
form.numCredit.data = int(5) #NOT WORKING - Integer Field

class cifForm(Form):
courseTitle = StringField('Course Title')
publishInCollegeCatalog = RadioField('Publish in college catalog?', choices=[(True,'Yes'),(False,'No')], )
numCredit = IntegerField('Credits')
submit = SubmitField('Submit')

我尝试在提交时打印出一些值,并注意到一些有趣的类型

@app.route('/formFill', methods=['GET', 'POST'])
def formFill():
form = cifForm()
if form.courseNum.data == 'MATH& 142':
form.courseTitle.data = 'Precalculus II : Trigonometry'
form.publishInCollegeCatalog.data = True# NOT WORKING
print form.numCredit.data
print type(form.numCredit.data)
print form.creditIsVariable.data
print type(form.numCredit.data)

控制台:

5
<type 'int'>
False
<type 'int'>

当我以编程方式设置它们时,我也打印了:

@app.route('/formFill', methods=['GET', 'POST'])
def formFill():
form = cifForm()
if form.courseNum.data == 'MATH& 142':
form.courseTitle.data = 'Precalculus II : Trigonometry'
form.publishInCollegeCatalog.data = True# NOT WORKING
form.numCredit.data = int(5)
print form.numCredit.data
print type(form.numCredit.data)
form.creditIsVariable.data = bool(False) #: NOT WORKING
print form.creditIsVariable.data
print type(form.numCredit.data)

控制台:

5
<type 'int'>
False
<type 'int'>

输出是相同的,变量赋值有效,但我没有在呈现的形式中看到这些值。

最佳答案

我已尝试重现您的问题,但我就是看不到它。但是,您可能会发现我使用 RadioField 的结果很有趣,而且我至少可以为您指出一个可行的解决方案。

这是你的问题行:

form.publishInCollegeCatalog.data = True# 不工作

这里的简单解决方法是简单地做这样的事情:

form.publishInCollegeCatalog.data = str(True)# WORKING

您将 True'True' 混为一谈:

工作示例:

from collections import namedtuple
from wtforms.validators import Required
from wtforms import Form
from wtforms import RadioField

from webob.multidict import MultiDict

class SimpleForm(Form):
example = RadioField('Label',
choices=[(True,'Truthy'),(False,'Falsey')])

# when this data is processed True is coerced to its
# string representation 'True'
data = {'example': True}

form = SimpleForm(data=MultiDict(data))

# checking form.data here yields - {'example': u'True'}

# This prints the radio markup using the value `True`
print form.example

form.example.data = True

# This prints the radio using the value True
print form.example

他们渲染什么?

首次打印:

enter image description here

第二次打印:

enter image description here

说明:

RadioField 呈现选择的 value 部分的字符串表示。这完全符合 HTML 规范。在这里治疗。

value = string

Gives the default value of the input element.

规范的 value 部分被视为字符串以支持范围广泛的值。 WTForms 在执行处理步骤时别无选择,只能将此类型视为字符串。它是最小公分母。

但是我的整数呢?

再一次,这不是我能够重现的问题。我创建的每个 IntegerField 的行为方式完全相同。如果您按照下面的示例操作,您的结果应该是相同的。

class SimpleForm(Form):
my_int = IntegerField()

data = {'my_int': int(5)}

form = SimpleForm(data=MultiDict(data))

print form.my_int

form.my_int.data = int(6)

print form.my_int

打印出来

<input id="my_int" name="my_int" type="text" value="5">
<input id="my_int" name="my_int" type="text" value="6">

这是人们所期望的。

关于python - Flask-WTF 表单填充整数字段和单选字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com