在flask shell中测试Form
>>> from flask import current_app
>>> app_ctx = app.app_context()
>>> app_ctx.push()
>>> from flask import request
>>> with app.test_request_context('/hello'):
form = LoginForm()
>>> form
<form.forms.LoginForm object at 0x10ef828d0>
>>> form.username()
u'<input id="username" name="username" required type="text" value="">'
>>> form.submit()
u'<input id="submit" name="submit" type="submit" value="Log in">'
>>> form.username.label()
u'<label for="username">Username</label>'
在创建HTML表单时,经常需要使用HTML\<input>元素的其他属性来对字段进行设置。比如,添加class属性设置对应的css类为字段添加样式;添加placeholder属性设置占位文本。默认情况下,WTForms输出的字段HTML代码只会包含id和name属性,属性值均为表单中对应的字段属性名称。如果要添加额外的属性,通常有两种方法。
1.使用render_kw属性
比如下面为username字段使用render_kw设置了placeholder HTML属性:
username = StringField('Username', render_kw={'placeholder': 'Your Username'})
这个字段被调用后输出的HTML代码如下所示:
<input type="text" id="username" name="username" placeholder="Your Username">
2.在调用字段时传入
在调用字段属性时,通过添加括号使用关键字参数的形式也可以传入字段额外的HTML属性:
>>>form.username(style='width: 200px;', class_='bar')
u'<i nput class="bar" id="username" name="username" style="width: 200px;" type="text
class是Python的保留关键字,在这里我们使用class_来代替class,渲染后的\<input>会获得正确的class属性,在模板中调用时则可以直接使用class。
通过上面的方法也可以修改id和name属性,但表单被提交后, WTForms需要通过name属性来获取对应的数据,所以不能修改name属 性值。
0 Comments latest
No comments.