我想为过去10年中的每一年创建一个带有字段的表单。所以,对于2020-2011年,我希望,比如说,每年有一个整数字段,变量名为year_2020,year_2019,year_2018。。。如果他们也有合适的标签也不错,比如2020年、2019年
我可以通过每年单独写一些东西来做到这一点,但我认为使用for循环生成它们会更好、更有效(?)。这可能吗
我看到了this question关于使用for循环在模板中生成字段的内容,但我想知道如何在python表单类本身中生成字段(不确定该如何称呼它;请原谅我的无知)。我见过this question但我似乎无法让它发挥作用。我也不喜欢这个解决方案,因为它没有给字段提供描述性名称,比如year_2020
这是我到目前为止的代码;为任何错误道歉
python:
forms.py
class YearForm(FlaskForm):
year = IntegerField(validators=[NumberRange(min=0,max=100000,message='Please enter an integer above 0.'),
InputRequired(message='Please enter a value.')])
class RentForm(FlaskForm):
years = FieldList(FormField(YearForm), min_entries=10)
模板:
form.html
for year in rentForm.years:
<p>{{ year.label }}: {{ year(size=32) }}
{% for error in year.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
看起来我访问模板中的字段不正确。正确的方法是什么?如何为字段提供更多描述性标签和变量名
任何帮助都将不胜感激;谢谢
编辑:如果这可以更容易地用另一种语言完成,请让我知道。我刚开始学习Flask/Python,我也没有结婚
好的,我能够使用来自this question的信息制作一个令人满意的玩具示例
python:
模板:
结果是: Rendered HTML (ignore all the tabs; I have a problem)
我想这应该很适合我的需要
PS:您可以访问单个字段,如下所示:
用于第一个下拉菜单
我也在做类似的事情。也许我的例子会有所帮助。我正在扩展表单,在您的例子中是RentForm.years,在我的Python烧瓶处理程序中,而不是在我的模板中。这是我的表格
注意,在我的例子中,我在父窗体上放置了一个按钮,允许用户添加另一行。如果您总是想要10行,那么处理它的方式会有所不同
下面是使用此表单的Python代码的一部分。append_条目行对您特别重要
如果request.method==“POST”:
下面是呈现模板的Python代码
最后,这里是我的模板处理这个的部分
生成的屏幕如下所示。。。
这有用吗
相关问题 更多 >
编程相关推荐