是否可以在WTForms内部使用HTML5中使用的一些新属性属性?
例如,假设您要使用占位符="foo",必需和自动聚焦属性创建TextField.如何在WTForms中完成?
在HTML中它看起来像这样: <input maxlength="256" name="q" value="" placeholder="foo" autofocus required>
请注意,placeholder="foo"在WTForms中很容易完成.autofocus并且required,因为它们没有价值,所以......好吧,就我所见,在WTForms中不受支持.
WTForms可以支持吗?
我在Google App Engine上使用带有WTForms(doc)的Flask.为选择字段生成具有空值的字段的最佳方法是什么?
form.group_id.choices = [(g.key().id(), g.name) for g in Group.all().order('name')]
Run Code Online (Sandbox Code Playgroud)
表单字段中是否有类似"blank = True"的内容?
myfield = wtf.SelectField()
Run Code Online (Sandbox Code Playgroud) 我在使用字典填充表单时遇到问题:
row = {'firstname':'Bob', 'lastname': "Smith",
'email': 'bob@bubba.com', 'phone': '512.999.1212'}
form = RolodexEntry(obj=row)
Run Code Online (Sandbox Code Playgroud)
不会将任何数据放入表单中(即form.firstname.data =之前的无).
表单定义的顶部如下所示.我不知道下一步该尝试什么.表单文档只是说:
obj - 如果formdata为空或未提供,则检查此对象是否存在与表单字段名称匹配的属性,这些属性将用于字段值.
class RolodexEntry(Form):
firstname = TextField('First Name',[validators.length(max=40)],
filters=[strip_filter])
lastname = TextField('Last Name', [validators.length(max=40)],
filters=[strip_filter])
email = TextField('Email', [validators.Optional(),
validators.length(max=25),
validators.Email()],
filters=[strip_filter])
...
Run Code Online (Sandbox Code Playgroud) 我已经能够实现此更改以创建在WTForms中禁用的Field.在渲染之前,如何有选择地禁用视图中的字段?
正如标题所说,这就是我所拥有的:
form = F(obj = myobject)
myfieldlist= FieldList(FormField(form))
{% for subfield in form.myfieldlist %}
{{ subfield.field }}
{{ subfield.label }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
没有输出任何想法?此外,还不完全确定是否需要FormField.谢谢
class Form(Form):
plan_start = DateField('Plan Start', validators=[Required()])
Run Code Online (Sandbox Code Playgroud)
这段代码将呈现此HTML.
<input id="plan_start" name="plan_start" type="text" value="">
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么类型是text和不是date?
我只能通过明确传递type='date'in模板来解决这个问题.
{% raw form.plan_start.label %}{% raw form.plan_start(type='date') %}
Run Code Online (Sandbox Code Playgroud) 我在Flask和AngularJS上开发网站.我需要使用AngularJS发送一个带AJAX的表单,但它需要输入字段的自定义属性.例如,我在Jinja2模板中有一个表单:
<form method="post" action="/">
{{ form.hidden_tag() }}
{{ form.name(placeholder="Name") }}
</form>
Run Code Online (Sandbox Code Playgroud)
那么如何从AngularJS添加一个属性让我的"名字"字段说"ng-model"?
谢谢你的帮助!
我有一个webapp,允许用户创建自己的字段,以便稍后在表单中呈现.
我有一个模型Formfield如下:
class Formfield(db.Model):
id = db.Column(db.Integer, primary_key = True)
form_id = db.Column(db.Integer, db.ForeignKey('formbooking.id'))
label = db.Column(db.String(80))
placeholder_text = db.Column(db.String(80))
help_text = db.Column(db.String(500))
box_checked = db.Column(db.Boolean, nullable = True, default = False)
options = db.Column(db.String) # JSON goes here?
answer = db.Column(db.String)
required = db.Column(db.Boolean, nullable = False, default = False)
order = db.Column(db.Integer)
fieldtype = db.Column(db.Integer)
Run Code Online (Sandbox Code Playgroud)
我用来表示一个字段,无论种类如何(复选框,输入,以后更多).
如您所见,每个字段都有一个Form_id的FK.
我正在尝试为给定的form_id生成动态表单.问题是我需要确定要为每个Formfield呈现的字段类型.所以我还需要在某个时候处理字段类型.
我想解决方案是以某种方式将form_id传递给我的Form类中的函数.
我不知道如何做到这一点或在哪里寻找解决方案.
任何帮助将非常感谢!
我正在使用Flask和Jinja2,我需要制作一个包含多行的可编辑表格.
这就是表格的样子:

这是HTML的代码:
<form action="/support/team-members-update" method="post">
<table>
<tbody><tr>
<th>Name</th>
<th>Id</th>
<th>Inbox Share</th>
</tr>
<tr>
<td>Ben</td><td>55555</td><td><input type="text" name="share_55555" value="0"></td></tr> <tr>
<td>Steve</td><td>66666</td><td><input type="text" name="share_66666" value="1"></td></tr> <tr>
<td>Harry</td><td>77777</td><td><input type="text" name="share_77777" value="1"></td></tr> <tr>
<td>Sally</td><td>88888</td><td><input type="text" name="share_88888" value="1"></td></tr></tbody></table>
<button type="submit">Send</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我目前的实现是在Lua中,我很难编写一堆字符串并将后期数据连接到本机Lua类型(有趣!).如果必须的话,我也可以在Python中手工处理表单数据,但我想可能有更好的解决方案.
我已经对WTForms进行了一些探索,但是没有太多运气让它正常工作.
我确实找到了FieldList,但这似乎处理了相同字段的列表,而不是具有相同确切字段的多行.
我也找到了TableWidget,但是文档很稀疏,我无法弄清楚如何实现它以了解是否可以做我想做的事情.
我正在使用Flask开发Web应用程序.我原来是手动编写HTML表单,然后切换到使用WTForms(这是一个教育项目,所以我展示了构建项目的每一步).
尝试添加HTML5表单字段时,我有点困惑,比如EmailField.我搜索了WTForms文档,并在线搜索,我无法找到如何使用HTML5 EmailField创建WTForm.
然后我安装了这个模块https://pypi.python.org/pypi/wtforms-html5,允许它,一切正常.但是我对添加额外的依赖感到不满意,特别是因为它似乎没有积极开发(https://github.com/brutus/wtforms-html5).
然后我结束了WTForms github页面,发现实际上支持所有新的HTML5字段,但默认情况下不会导入这些字段.https://github.com/wtforms/wtforms/blob/master/wtforms/fields/html5.py因此,而不是使用
from WTForms import EmailField
Run Code Online (Sandbox Code Playgroud)
正如人们所推断的那样
from WTForms import TextField
Run Code Online (Sandbox Code Playgroud)
一个人必须使用
from wtforms.fields.html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
我以前使用wtforms-html5模块如下
from wtforms_html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
因此,我更改了所有出现的内容wtforms_html5,wtforms.fields.html5并且我的应用程序完全按预期工作.
好的,感谢您阅读所有背景资料.现在提问:
为什么WTForms文档中没有提到任何html5字段(EmailField,DateField等)?
为什么这些字段默认情况下不会像其他字段一样导入WTForms
这些字段是否稳定/打算使用?
从WTForms导入字段的最佳做法是什么?
对于Text字段,我可以使用以下任何一种方法:
from wtforms import TextField
from wtforms.fields import TextField
from wtforms.fields.simple import TextField
Run Code Online (Sandbox Code Playgroud)
但对于EmailField,我必须使用
from wtforms.fields.html5 import EmailField
Run Code Online (Sandbox Code Playgroud)
我想要:
from wtforms.fields import TextField
from wtforms.fields import EmailField
Run Code Online (Sandbox Code Playgroud)
但是这需要在fields [__init__][1]文件中添加一行,我不愿意这样做,因为它是一个教育项目,这只会让学习者感到困惑.
我在寻找
wtforms ×10
python ×8
flask ×6
jinja2 ×2
angularjs ×1
html5 ×1
javascript ×1
sqlalchemy ×1
tornado ×1