标签: wtforms

如何使用wtforms指定<textarea>标记的行和列

构造一个wtforms的TextAreaField是这样的:

content = wtf.TextAreaField('Content', id="content-area", validators=[validators.Required()])
Run Code Online (Sandbox Code Playgroud)

如何指定与此textarea关联的行数和列数?

python wtforms

17
推荐指数
4
解决办法
1万
查看次数

Pylint - Pylint无法导入flask.ext.wtf?

我的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库实际上只是库的"快捷方式".

知道怎么解决这个问题吗?非常感谢!

python pylint flask wtforms

17
推荐指数
2
解决办法
5629
查看次数

如何相互验证wtforms字段?

SelectField在表单中有三个相同的输入,每个输入都有相同的选项集.我不能使用一个多选.

我想确保用户为这三个字段选择三种不同的选择.

在自定义验证中,您似乎一次只能引用一个字段,而不是将此字段的值与其他字段进行比较.我怎样才能做到这一点?谢谢!

python validation flask wtforms flask-wtforms

17
推荐指数
2
解决办法
8055
查看次数

WTForms得到错误

目前在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)

python flask wtforms

16
推荐指数
3
解决办法
2万
查看次数

如何使用FormFields的WTForms FieldList?

我正在使用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,但是:

  1. 为什么地点列表只有一个,而不是两个?
  2. 为什么位置中的值是空的?

有谁知道我在这里做错了什么?欢迎所有提示!

python forms fieldlist flask wtforms

16
推荐指数
1
解决办法
2万
查看次数

ModuleNotFoundError:没有名为“wtforms.fields.html5”的模块

我有一个使用 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)

python flask wtforms flask-wtforms

16
推荐指数
2
解决办法
1万
查看次数

WTForms:如何在SelectMultipleField中选择选项?

选择可以使用 form.myfield.choices=[("1","Choice1"), ("2","Choice2")]

设置所选选项的方法是什么?

html python select wtforms

15
推荐指数
3
解决办法
2万
查看次数

wtforms表单类子类和字段顺序

我有一个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)

python subclassing wtforms

15
推荐指数
2
解决办法
7158
查看次数

如何在Ajax验证中使用WTForms?

我习惯于在我的烧瓶应用程序中使用Flask-WTF使用WTForms.进行服务器端验证是微不足道的.但是,如何利用此服务器验证成为字段级别,ajax,客户端验证?因此,当用户选项卡到另一个输入字段时,我的应用程序可以直接验证它并提供验证警告/信息/错误.

我还没有在互联网上找到资源

python flask wtforms flask-wtforms

15
推荐指数
1
解决办法
6952
查看次数

使用Flask,Flask-Admin和WTforms的DatePickerWidget

我正在尝试渲染一个包含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)

jinja2 flask wtforms flask-wtforms flask-admin

15
推荐指数
1
解决办法
2万
查看次数