标签: flask-wtforms

没有名为flask.ext.wtf的模块

我正在关注@Miguel flask mega tutorial,这很棒.在第3章他讨论了web表单和flaskWTF扩展,安装这样的扩展sudo pip install Flask-WTF导致了

成功安装Flask-WTF Flask WTForms Werkzeug Jinja2 itsdangerous markupsafe

但在执行时./run.py我得到一个错误:

没有名为flask.ext.wtf`的模块

我已经谷歌错误并试图像这样运行它:flask/bin/python run.py但得到了相同的错误,也尝试过flask/bin/activate

更新:如果你遇到同样的错误这就解决了我的问题我安装了以下内容,肯定不是全部都需要但是因为我没有逐一去找出哪一个做了诀窍我列出他们所有人

flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install sqlalchemy
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy==0.55a
flask/bin/pip install flask-wtf
flask/bin/pip install pytz
flask/bin/pip install flask-babel
flask/bin/pip install flup
Run Code Online (Sandbox Code Playgroud)

python flask flask-wtforms

16
推荐指数
4
解决办法
5万
查看次数

使用Flask,SQLAlchemy和WTForms更新多对多关系?

我想使用代表这些模型的Flask,SQLAlchemy和WTForms为多对多关系创建一个表单:

personaddress = db.Table('personaddress',
    db.Column('person', db.Integer, db.ForeignKey('person.id')),
    db.Column('address', db.Integer, db.ForeignKey('address.id'))
)

class Person(db.Model):
    __tablename__ = "person"
    id = db.Column(Integer, primary_key=True)
    name = db.Column(String, nullable=False)
    addresses = db.relationship('Address', secondary=personaddress, backref=db.backref('person', lazy='dynamic'))

class Address(db.Model):
    __tablename__ = "address"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
Run Code Online (Sandbox Code Playgroud)

要求

现在我想创建一个包含表单的单个页面来实现以下功能:

  • 添加/编辑/删除某个人
  • 添加/编辑/删除地址
  • 添加/编辑/删除人与地址之间的关系

重要要求:使用QuerySelectField,我可以为一个人选择现有地址.但我想以相同的形式添加新地址.

我已经model_form使用了FormField用于连接表的主要模型和子表单,但我无法弄清楚如何更新包括外键关系在内的所有内容.该页面应该有一个提交按钮,用于显示所有表单和子表单.

问题

  1. 如何在Flask中实现上述要求?
  2. 这是多对多场景,Django可以通过其管理界面更轻松地处理这些场景吗?

python sqlalchemy flask flask-wtforms

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

使用Flask从WTForm进行电子邮件验证

我正在关注来自http://code.tutsplus.com/tutorials/intro-to-flask-adding-a-contact-page--net-28982的Flask教程,目前我仍然坚持验证步骤:

旧版本有以下内容:

from flask.ext.wtf import Form, TextField, TextAreaField, SubmitField, validators, ValidationError

class ContactForm(Form):
name = TextField("Name",  [validators.Required("Please enter your name.")])
email = TextField("Email",  [validators.Required("Please enter your email address."), validators.Email("Please enter your email address.")])
submit = SubmitField("Send")
Run Code Online (Sandbox Code Playgroud)

阅读评论后我将其更新为:(用InputRequired替换validators.Required)

(same fields)  

class ContactForm(Form):  
name = TextField("Name", validators=[InputRequired('Please enter your name.')])
email = EmailField("Email",  validators=[InputRequired("Please enter your email address.")]), validators.Email("Please enter your email address.")])
submit = SubmitField("Send")
Run Code Online (Sandbox Code Playgroud)

我唯一的问题是我不知道如何处理validators.Email.我得到的错误信息是:

NameError: name 'validators' is not defined
Run Code Online (Sandbox Code Playgroud)

我查看了文档,也许我没有深入研究,但我似乎无法找到电子邮件验证的示例.

python email validation flask-wtforms

16
推荐指数
2
解决办法
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,CSRF,flask,FieldList

使用FieldListWTForms 时,我无法通过验证.我一直收到这个错误. {'csrf_token': [u'CSRF token missing']}.问题是如果我没有任何数据要在FieldList现场验证,验证通过并且没有问题.但是,当我尝试使用任何数据验证表单时,我得到了该错误.

这是我的表格:

class FilterForm(wtf.Form):
    filter_value = wtf.TextField('Value', validators=[validators.Required()])
    filter_operator = wtf.SelectField('Operator', validators=[validators.Required()])
    filter_compare_value=wtf.TextField('Compare Value', validators=[validators.Required()])


class RedirectForm(wtf.Form):
    redirect_id = wtf.HiddenField('id')
    redirect_name = wtf.TextField('Name', validators=[validators.Required()])
    redirect_url = wtf.TextField('URL', validators=[validators.Required()])
    redirect_type = wtf.SelectField('Type', validators=[validators.Required()])
    redirect_method = wtf.SelectField('Method', validators=[validators.Required()])
    redirect_active = wtf.BooleanField('Is Active')
    redirect_filters_any = wtf.FieldList(wtf.FormField(FilterForm))
    redirect_filters_all = wtf.FieldList(wtf.FormField(FilterForm))
Run Code Online (Sandbox Code Playgroud)

表单似乎正确显示并正常工作,直到我向其中任何一个redirect_filters_any或添加数据redirect_filters_all

有没有办法禁用csrf FieldList或将CSRF值传递给FieldList?我想保持启用CSRF保护,但似乎无法通过此验证问题.

这是Jinja2模板

{% extends "base.html" %}
{% set active_page = "endpoints" %}
{% block tail_script %} …
Run Code Online (Sandbox Code Playgroud)

csrf flask flask-wtforms

15
推荐指数
4
解决办法
8642
查看次数

如何在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万
查看次数

导入错误:无法从“werkzeug”导入名称“url_encode”

我目前正在运行的畅达环境flask-wtf version 0.14.2wtforms version 2.21我有麻烦解决这个ImportError: cannot import name 'url_encode' from 'werkzeug'

以下代码是完整的回溯。

Traceback (most recent call last):
      File "run.py", line 1, in <module>
        from flaskblog import app
      File "/Users/justinding/Desktop/test/test_wesite/flaskblog/__init__.py", line 10, in <module>
        from flaskblog import routes
      File "/Users/justinding/Desktop/test/test_wesite/flaskblog/routes.py", line 4, in <module>
        from flaskblog.forms import RegistrationForm,LoginForm
      File "/Users/justinding/Desktop/test/test_wesite/flaskblog/forms.py", line 1, in <module>
        from flask_wtf import FlaskForm
      File "/opt/anaconda3/envs/smartbox/lib/python3.7/site-packages/flask_wtf/__init__.py", line 17, in <module>
        from .recaptcha import *
      File "/opt/anaconda3/envs/smartbox/lib/python3.7/site-packages/flask_wtf/recaptcha/__init__.py", line 2, in <module>
        from .fields …
Run Code Online (Sandbox Code Playgroud)

python flask flask-wtforms

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

AJax不能与bootstrap-select一起使用

我找到了flask-jquery-ajax示例,其中用户从车辆"Make"下拉菜单中选择项目,通过对所选择的make的模型列表进行AJAX请求来填充车辆"Model"下拉菜单.

我试图通过bootstrap-select替换下拉菜单,只要我在第二个下拉菜单中包含class ="selectpicker form-control",它就会在选择第一个下拉列表之后再填充它.

这是HTML模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Flask Jquery AJAX Drop Down Menu Example</title>

    <link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" >
    <link rel="stylesheet" type="text/css" href=//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.2/css/bootstrap-select.min.css>
    <link rel="stylesheet" href="{{ url_for('static', filename='web.css') }}">

    <!-- Custom styles for this template -->
    <link href="http://getbootstrap.com/examples/non-responsive/non-responsive.css" rel="stylesheet">
</head>
<body>
    <h1>Select Vehicle</h1>

    <form class="form-horizontal" action="/" method="POST" >
      <div class="input-group">
    <span class="input-group-addon">Make:</span>
    {{ form.make(id="make_select", class="selectpicker form-control") }}
      </div>

      <div class="input-group">
    <span class="input-group-addon">Model:</span>
    {{ form.model(id="model_select", class="selectpicker form-control") }}
      </div>
        <button …
Run Code Online (Sandbox Code Playgroud)

ajax jquery flask flask-wtforms bootstrap-select

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

使用从前一个字段中选择的值填充WTForms选择字段

新手,尝试按照着名的Flask教程构建应用程序,使用Flask-bootstrap,Flask-wtforms,Jinja等

我有一个包含2个选择字段和一个按钮的表单.

class Form(FlaskForm): 
    school_year = SelectField('School year', choices=some_tuples_list)
    category = SelectField('Category', choices=[]) 
    submit = SubmitField('submit')
Run Code Online (Sandbox Code Playgroud)

我希望只预先填充第一个字段,并根据前一个字段的选定值填充另一个字段(在客户端?).

在模板中,我尝试了类似的东西

{{ form.school_year(**{"onchange":"getCategories()"}) }}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常(假设我返回元组列表以填充下一个字段,使用正确的javascript和路由)但我想要类似下面的内容

{{ wtf.form_field(form.school_year(**{"onchange":"getCategories()"})) }}
Run Code Online (Sandbox Code Playgroud)

哪个不起作用(错误:wtforms.widgets.core.HTMLString对象'没有属性'标志')

所以,我想我的问题是:如何在这个wtf表单字段上实现onChange事件?(这是我必须做的,还是从视图功能有一种方法?)

提前致谢.

flask flask-wtforms flask-bootstrap

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