我对于瓶子和WTForms很新,所以提前抱歉。
无论如何,我尝试使用<span class="social_count"><?php echo get_pins(); ?></span>
forms.py
我很熟悉这样一个事实,即我必须在File_Choices = [('1', 'ex1.pdf'), ('2', 'ex2.pdf')
class Inputs(Form):
Files = SelectField(u'File', choices=File_Choices,validators =[Required()])
中声明一些内容,以便在form1=Inputs()
中声明一个表单,但是当我需要声明一个未知数量的形成并跟踪选定的值。
我的具体问题是我有一个包含N个元素的列表,每个元素必须对应于用户从表单中选择的文件。所以我将我的问题分解为仅创建N个表单并考虑使用这样的for循环:
views.py
因此,如果列表的长度为5,那么最终产品是5个输入形式,声明为form1,form2,form3,form4,form5。我知道这显然不会像我刚刚编写的那样工作,但这是我试图获得的功能所以我仍然可以使用像
这样的东西访问提交的值 for i in range(len(PDF_list))
form'i'=Input()
。
Theres可能是一个非常明显的方法,但是,我对使用flask和WTForms感到很陌生,所以任何帮助都会受到赞赏,如果你能逐步解释你自己做了什么,那么你的解决方案是什么? #39; m new,那将是非常棒的。
答案 0 :(得分:2)
我相信你想要的是FieldList。
所以你有类似的东西:
from wtforms.fields import FieldList
file_choices = [('1', 'ex1.pdf'), ('2', 'ex2.pdf')
class Inputs(Form):
files = FieldList(
SelectField(u'File', choices=file_choices, validators =[Required()]),
min_entries = N
)
min_entries
指定了多少&#34; SelectFields&#34;应该出现在表格上。这样,您就有一个具有多个下拉选择字段的表单,每个字段都具有相同的file_choices列表。
在模板文件中,您可以输出所有这样的选择字段(这将显示所有N个选择字段:
<html>
<form action="" method=post>
{{ form.files }}
<input type="submit" />
</form>
</html>
您还可以对form.files
进行迭代,并为每个SelectField
单独设置样式
现在,当您的表单发布时,您可以通过迭代SelectField
来访问每个form.files
,如下所示:
for select_field in form.files:
print(select_field.data)
您还可以使用索引访问SelectField
。要访问第三个SelectField
:
form.files[2].data
将返回&#39; 1&#39;或者&#39; 2&#39;取决于用户在SelectField