选择字段返回值 wtf-forms



我用这段代码在python中创建了一个SelectField:

condition = SelectField(u'Condition', choices = [(1,condition_string[5]),(2, condition_string[4]),(3, condition_string[3]),(4, condition_string[2]),(5, condition_string[1])], validators =[validators.Required(message=u'Must enter the condition of the book')])

我的问题是:当用户提交他们的选择时,HTML将返回什么: 它会返回 condition_string[] 中的值,还是返回它在列表中排序的数字,例如:如果 use 选择第一个选项,它会返回 '1' 还是 condition_string[5] 中的值?

两者都不是。

来自 WTForms 文档:

选择

字段保留一个选择属性,该属性是一系列(值、标签)对。值部分理论上可以是任何类型的,但是由于表单数据由浏览器作为字符串发送,因此您需要提供一个函数,该函数可以将字符串表示形式强制回可比较的对象。

(格式不正确的)问题是,

"HTML中将返回什么?"

我假设你的意思是问这样的事情:

处理从浏览器接收的数据后,condition.data的价值是多少?

答案是:一个字符串。它实际上可以是任何字符串 - 这就是你必须验证的原因。

但是如果用户在合作,浏览器会以字符串的形式发回值,condition.data会返回u'1',或者u'2',等等。 注意,值是(值,标签)对的第一个元素,不一定是它在choices列表中的位置。

按原样,该字段永远不会验证,因为作为值 ( int s) 提供的数字将与字符串数据(默认情况下强制为 unicode)不匹配。这就是为什么文档说,"你需要提供一个函数,可以将字符串表示形式强制回一个类似的对象。

最新更新