构造一个wtforms的TextAreaField是这样的:
content = wtf.TextAreaField('Content', id="content-area", validators=[validators.Required()])
Run Code Online (Sandbox Code Playgroud)
如何指定与此textarea关联的行数和列数?
我的Pylint安装导入烧瓶就好了.使用相同的烧瓶安装,我的wtforms在我的应用程序中运行得很好.但是,当我在导入wtforms的文件上运行Pylint时:
from flask.ext import wtf
from flask.ext.wtf import validators
class PostForm(wtf.Form):
content = wtf.TextAreaField('Content', validators=[validators.Required()])
Run Code Online (Sandbox Code Playgroud)
从Pylint我得到:
E: 1,0: No name 'wtf' in module 'flask.ext'
E: 2,0: No name 'wtf' in module 'flask.ext'
F: 2,0: Unable to import 'flask.ext.wtf'
Run Code Online (Sandbox Code Playgroud)
在搜索时我发现这个讨论表明它可能是因为flask.ext库实际上只是库的"快捷方式".
知道怎么解决这个问题吗?非常感谢!
我SelectField在表单中有三个相同的输入,每个输入都有相同的选项集.我不能使用一个多选.
我想确保用户为这三个字段选择三种不同的选择.
在自定义验证中,您似乎一次只能引用一个字段,而不是将此字段的值与其他字段进行比较.我怎样才能做到这一点?谢谢!
目前在WTForms中访问错误,你必须循环遍历字段错误,如下所示:
for error in form.username.errors:
print error
Run Code Online (Sandbox Code Playgroud)
由于我正在构建一个不使用表单视图的休息应用程序,因此我不得不检查所有表单字段以查找错误所在的位置.
有没有办法可以做类似的事情:
for fieldName, errorMessage in form.errors:
...do something
Run Code Online (Sandbox Code Playgroud) 我正在使用Flask建立一个网站,我在其中使用WTForms.在表单中,我现在想要使用FormFields的FieldList,如下所示:
class LocationForm(Form):
location_id = StringField('location_id')
city = StringField('city')
class CompanyForm(Form):
company_name = StringField('company_name')
locations = FieldList(FormField(LocationForm))
Run Code Online (Sandbox Code Playgroud)
所以让人们有能力进入一个有两个地点的公司(动态添加地点的时间比较晚)我在前面这样做:
<form action="" method="post" role="form">
{{ companyForm.hidden_tag() }}
{{ companyForm.company_name() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
<input type="submit" value="Submit!" />
</form>
Run Code Online (Sandbox Code Playgroud)
所以在提交时我打印的位置:
print companyForm.locations.data
Run Code Online (Sandbox Code Playgroud)
但我明白了
[{'location_id': u'', 'city': u''}]
Run Code Online (Sandbox Code Playgroud)
我可以使用locationForm打印第一个位置的值(见下文),但我仍然不知道如何获取第二个位置的数据.
print locationForm.location_id.data
print locationForm.city.data
Run Code Online (Sandbox Code Playgroud)
所以位置列表确实有一个带空值的dict,但是:
有谁知道我在这里做错了什么?欢迎所有提示!
我有一个使用 wtforms 的 Flask 应用程序。
我有一个文件,它的作用是:
from wtforms.fields.html5 import DateField, EmailField, TelField
# rest of the file
Run Code Online (Sandbox Code Playgroud)
我只是想重建我的 docker 容器,现在出现此错误:
ModuleNotFoundError: No module named 'wtforms.fields.html5'
Run Code Online (Sandbox Code Playgroud)
我的requirements.txt:
flask
flask-login
flask_sqlalchemy
Flask-Mail
pyodbc
requests
waitress
wtforms
Run Code Online (Sandbox Code Playgroud)
我尝试添加flask_WTF但没有修复它。
知道发生了什么事吗?我想过升级 wtforms 但似乎我拥有最新版本:
pip install wtforms
Requirement already satisfied: wtforms in /usr/local/lib/python3.9/site-packages (3.0.0)
Requirement already satisfied: MarkupSafe in /usr/local/lib/python3.9/site-packages (from wtforms) (2.0.1)
Run Code Online (Sandbox Code Playgroud) 选择可以使用 form.myfield.choices=[("1","Choice1"), ("2","Choice2")]
设置所选选项的方法是什么?
我有一个UserForm类:
class UserForm(Form):
first_name = TextField(u'First name', [validators.Required()])
last_name = TextField(u'Last name', [validators.Required()])
middle_name = TextField(u'Middle name', [validators.Required()])
username = TextField(u'Username', [validators.Required()])
password = TextField(u'Password', [validators.Required()], widget=PasswordInput())
email = TextField(u'Email', [validators.Optional(), validators.Email()])
Run Code Online (Sandbox Code Playgroud)
并希望在UpdateUserForm中使密码字段成为可选:
class UpdateUserForm(UserForm):
password = TextField(u'Password', [validators.Optional()], widget=PasswordInput())
Run Code Online (Sandbox Code Playgroud)
但密码字段位于电子邮件字段之后,而不是之前.
如何在子类化时保留字段顺序?
此外,当我尝试更改密码字段验证器时它不起作用 - 密码仍然是必需的:/为什么?
class UpdateUserForm(UserForm):
def __init__(self, **kwargs):
self.password.validators = [validators.Optional()]
super(UpdateUserForm, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)
要么
class UpdateUserForm(UserForm):
def __init__(self, **kwargs):
self.password = TextField(u'Password', [validators.Optional()], widget=PasswordInput())
super(UpdateUserForm, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)
class UpdateUserForm(UserForm):
def __init__(self, formdata=None, obj=None, prefix='', **kwargs):
self._unbound_fields[4][1] = TextField(u'Password', …Run Code Online (Sandbox Code Playgroud) 我习惯于在我的烧瓶应用程序中使用Flask-WTF使用WTForms.进行服务器端验证是微不足道的.但是,如何利用此服务器验证成为字段级别,ajax,客户端验证?因此,当用户选项卡到另一个输入字段时,我的应用程序可以直接验证它并提供验证警告/信息/错误.
我还没有在互联网上找到资源
我正在尝试渲染一个包含DatePicker的模板,但是当我尝试时遇到500错误.因为我的代码是正确的,但似乎有些东西失败了或者我没有正确理解它的方法.
代码如下:
Reporting.py
from flask.ext.admin import BaseView, expose
from wtforms import DateField, Form
from wtforms.validators import Required
from flask.ext.admin.form import widgets
from flask import request
class DateRangeForm(Form):
start_date = DateField('Start', validators=[Required()], format = '%d/%m/%Y', description = 'Time that the event will occur', widget=widgets.DatePickerWidget)
class ReportingView(BaseView):
@expose('/')
def index(self):
form = DateRangeForm(request.form)
return self.render('reporting.j2', form=form)
Run Code Online (Sandbox Code Playgroud)
报告模板:
{% extends 'admin/master.html' %}
{% block body %}
{{super()}}
Working on it!
{% if form %}
{{form.start_date}}
{% endif %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud) wtforms ×10
python ×9
flask ×7
fieldlist ×1
flask-admin ×1
forms ×1
html ×1
jinja2 ×1
pylint ×1
select ×1
subclassing ×1
validation ×1