标签: flask-wtforms

将 * 添加到必填字段的标签

我想在标签文本之前(或之后)添加“*”,以防需要提交。

我现在可以通过在我的模板中使用它来做到这一点:

{% for field in form %}
    <label for="{{ field.name }}">
    {{ '*' if field.flags.required }}{{ field.label.text }} :
    </label>
    {{ field }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的方法,至少有一种方法可以避免手动添加标签元素?

python flask wtforms flask-wtforms

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

How to bind a field in __init__ function of a form

class Example_Form(Form):
    field_1 = TextAreaField()
    field_2 = TextAreaField()

    def __init__(self, type, **kwargs):
        super(Example_Form, self).__init__(**kwargs)

        if type == 'type_1':
           self.field_3 = TextAreaField()
Run Code Online (Sandbox Code Playgroud)

In some scenarios I need to dynamically add fields into the form. The field_3 added to example form turns out to be a UnboundField. I tried to bind field_3 to form in __init__ function, but it won't work.

field_3 = TextAreaField()
field_3.bind(self, 'field_3')
Run Code Online (Sandbox Code Playgroud)

How to bind field_3 to example form?

python flask wtforms flask-wtforms

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

使用flask-wtf时出现未定义错误:“wtf未定义”

我是 Flask 和 WTF 的新手,在设置登录页面时遇到困难。我在 StackOverflow 上发现了一些导致类似错误的问题,但这些问题是由于表单未传递到模板而导致的,我相信我已经这样做了。

这是输入.py:

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask import render_template, request, redirect, url_for, send_file
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField
from wtforms.validators import InputRequired, Email, Length

from models import *

app = Flask(__name__)

app.config['SECRET_KEY'] = 'thisisasecret'
Bootstrap(app)

app.config.from_pyfile('config.py')
db = SQLAlchemy(app)


class LoginForm(FlaskForm):
    username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)])
    password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)])
    remember = BooleanField('remember me')


@app.route('/')
def index(): …
Run Code Online (Sandbox Code Playgroud)

flask-login flask-wtforms

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

如何在 Flask-WTForms render_kw 中使用 Flask-Babel gettext?

我开始将 Babel 与 WTForms 和 Flask 一起使用。下面我尝试 gettext 我的用户名密码的占位符关键字字段的占位符关键字:

\n\n
#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom flask_babel import gettext\nfrom flask_wtf import FlaskForm\nfrom wtforms import PasswordField, StringField\nfrom wtforms.validators import DataRequired\n\n\nclass LoginForm(FlaskForm):\n    username = StringField(label=\'username\',\n                           validators=[DataRequired()],\n                           render_kw={"placeholder": gettext(\'Username\')})\n    password = PasswordField(label=\'password\',\n                             validators=[DataRequired()],\n                             render_kw={"placeholder": gettext(\'Password\')})\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的法语 .po 文件(当然已经编译过):

\n\n
# French (France) translations for PROJECT.\n# Copyright (C) 2017 ORGANIZATION\n# This file is distributed under the same license as the PROJECT project.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2017.\n#\nmsgid ""\nmsgstr ""\n"Project-Id-Version: PROJECT …
Run Code Online (Sandbox Code Playgroud)

python flask flask-wtforms flask-babel python-babel

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

WTForms 字段默认值突然不起作用

我有以下代码:

class ReconForm(Form):
    compressedFilePath = StringField('Compressed File Path', [validators.Required()] )
Run Code Online (Sandbox Code Playgroud)

我像这样实例化它:

form = ReconForm()
form.compressedFilePath.default = 'hey'
Run Code Online (Sandbox Code Playgroud)

它什么都不做。它曾经将默认值设置为 hey 但后来它停止了,我不知道为什么。

如果我打印 form.compressedFilePath.default 然后它打印正确的值。如果我在字段构造函数中设置默认值,模板会呈现正确的值。否则它什么都不做,它让我发疯。

我究竟做错了什么?

flask wtforms flask-wtforms

0
推荐指数
1
解决办法
3501
查看次数

TypeError:'Required'对象不是可迭代的Flask WTF Forms

我正在关注http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982教程来开发我自己的应用程序.

我试图创建一个注册表但遇到此错误:

TypeError: 'Required' object is not iterable 
Run Code Online (Sandbox Code Playgroud)

我的路线页是

from cafe_klatch import app
from flask import render_template,request,flash
from forms import ContactForm, SignupForm
from models import db


@app.route('/')
@app.route('/index')

def index():
    return render_template('index.html')

@app.route('/contact', methods = ['GET','POST'])

def contact():
    form1 = ContactForm()

    if request.method == 'POST':
        if form.validate() == False:
            flash('All fields are required.')
            return render_template('contact.html',form = form)
        else:
            return 'Form posted.'    
    elif request.method == 'GET':
        return render_template('contact.html',form = form)  


@app.route('/signup', methods =['GET','POST'])

def signup():
    form = SignupForm() 

    if …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy flask-login flask-wtforms

0
推荐指数
1
解决办法
3531
查看次数

如何渲染Flask WTF HTML 5小部件?

我正在尝试使用Flask的html 5小部件来构建RangeInput(搜索"范围"以找到它).我想我在HTML模板中遗漏了一些东西,因为它呈现的方式如下:

它不会创建表单而是文本!

正如你所看到的,这不是我想要的:我期待的是这样的:

在此输入图像描述

所以我认为错误不是那么棘手,但我找不到它.这是我的不同文件:

__author__ = 'laurentmeyer'

# That's my main class, don't be afraid, all is local, you cannot hack anything

from MySQL import MySQL
from flask import Flask, render_template
from Form import Form;

mysql = MySQL();
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'Laurent'
app.config['MYSQL_DATABASE_PASSWORD'] = 'laurent'
app.config['MYSQL_DATABASE_DB'] = 'Houses'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)

@app.route("/")
def home():
    cursor = mysql.connect().cursor()
    cursor.execute("SELECT * from Offers;")
    data = cursor.fetchall()
    form = Form(csrf_enabled=False);
    if data is None:
        return "No data"
    else: …
Run Code Online (Sandbox Code Playgroud)

html python flask flask-wtforms

0
推荐指数
1
解决办法
1446
查看次数

使用表单选择服务器上的文件时出现错误请求错误

from flask.ext.wtf import Form
from flask import send_from_directory
from wtforms import StringField, BooleanField
from wtforms import SelectField

import os
from os import listdir
from os.path import isfile, join

crewPath =  ("/myproject/app/static/Crews")

filenamesCrew = [f for f in listdir(crewPath) if isfile(join(crewPath,f)) ]

class userInput(Form):
    json_fileCrew = SelectField(u"json_fileCrew", choices=[(f, f) for f in filenamesCrew])

    def get_data(self):
        json = send_from_directory (crewPath, self.json_fileCrew.data)
        return json

@app.route('/CastCrew', methods=['GET', 'POST'])
def castCrew():
    form = userInput(request.form["crewYear"])
    return render_template('CastCrew.html', title = 'Cast Crew View', form = form)

@app.route("/data", …
Run Code Online (Sandbox Code Playgroud)

python flask flask-wtforms

0
推荐指数
1
解决办法
204
查看次数

为什么我的WTForm HiddenField没有设置为默认值?

我有一个EmployeeForm领域包括PhotoForm如下所示:

class EmployeeForm(Form):
    name = StringField('Full Name', validators=[DataRequired()])
    title = StringField('Job Title', validators=[DataRequired()])
    email = StringField('Company Email', validators=[DataRequired()])
    department = StringField('Department', validators=[DataRequired()])
    photo = FormField(PhotoForm)
Run Code Online (Sandbox Code Playgroud)

取决于USE_S3配置变量是否设置为TrueFalse我希望我的照片对象上的两个字段自动设置为默认值,如下所示:

class PhotoForm(Form):
    image = S3ImageUploadField(base_path=app.config['UPLOAD_FOLDER'],namegen=photo_name_generator)

    if app.config['USE_S3']:
        image_storage_type = HiddenField('s3')
        image_storage_bucket_name = HiddenField(app.config['S3_BUCKET_NAME'])
    else:
        image_storage_type = HiddenField('empty string')
        image_storage_bucket_name = HiddenField('empty string')
Run Code Online (Sandbox Code Playgroud)

但是,当我检查表单的html时,没有隐藏的字段,也没有当我在提交时检查数据库是否有任何设置值image_storage_type,image_bucket_name并且我无法弄清楚为什么会这样.我已经检查了一些stackoverflow问题,但它们并不完全符合我的问题,因为我正在使用Flask-AdminWTForm在一起,在我看来,它使它更棘手.

此外,我admin.py的表单呈现文件如下所示:

class EmployeeView(ModelView):
     form = EmployeeForm
Run Code Online (Sandbox Code Playgroud)

我不确定这是WTForm方面或Flask-Admin方面的问题,但我已经尝试了很长时间才能完成这项工作.有没有人有任何想法?非常感谢帮助.

python flask flask-wtforms flask-admin

0
推荐指数
1
解决办法
1808
查看次数

为什么 Flask-Admin 在尝试编辑模型时会抛出此异常?

例外是AttributeError: 'StringField' object has no attribute 'wrap_formdata',它似乎只发生在我从 Flask-Admin 仪表板创建或编辑以下两个模型中的任何一个时:

class Experiment(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    property_id = db.Column(db.Integer,
                            db.ForeignKey('property.id'),
                            index=True,
                            nullable=False)

    name = db.Column(db.String, nullable=False)

    start_date = db.Column(db.DateTime, nullable=True)
    end_date = db.Column(db.DateTime, nullable=True)
    status = db.Column(db.String, nullable=False, default='Draft')

    title = db.Column(db.String)
    meta = db.Column(db.String)
    seed_uri = db.Column(db.String)

    targets = db.Column(postgresql.JSON)
    variations_json = db.Column(postgresql.JSON)

    variations = db.relationship('ExperimentVariation',
                                  backref='experiment',
                                  cascade='save-update, merge, delete')

    def __repr__(self):
        repr_fmt = '<Experiment {id}, {property_id} {name}>'
        return repr_fmt.format(id=self.id,
                               property_id=self.property_id,
                               name=self.name)


class ExperimentVariation(db.Model):
    id = db.Column(db.Integer, primary_key=True) …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy wtforms flask-sqlalchemy flask-wtforms flask-admin

0
推荐指数
1
解决办法
1114
查看次数

如何在 jinja2 模板中使用占位符?

我正在flask中创建一个联系表单,我想在jinja2中使用html占位符,如何在jinja 2中使用html占位符?

<form action="{{ url_for('contact_page') }}" class="col-md-6 mx-auto my-auto mt-3" method="POST">

{{ form.hidden_tag() }}

<p class="text-left">{{ form.name.label() }}</p>
{{ form.name(class="form-control mb-2") }}

<p class="text-left">{{ form.email.label() }}</p>
{{ form.email(class="form-control mb-2") }}

<p class="text-left">{{ form.subject.label() }}</p>
{{ form.subject(class="form-control mb-2") }}

<p class="text-left">{{ form.message.label() }}</p>
{{ form.message(class="form-control mb-3") }}

<div class="form-group">
{{ form.submit(class="btn btn-primary btn-round mt-4 ") }}
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

python flask wtforms flask-wtforms

0
推荐指数
1
解决办法
2313
查看次数

MultiFileField 不返回文件,返回 _str_

我正在尝试使用 Flask 中的 WTForms 使用“MultiFileField”上传多个图像,但是,它返回一个字符串而不是文件对象。所以我尝试使用以下内容:

request.files.getlist(form.upload_field.data)
Run Code Online (Sandbox Code Playgroud)

但它返回一个空列表,所以无论如何我可以处理这个将照片保存到目录中

python file-upload flask flask-wtforms

0
推荐指数
1
解决办法
346
查看次数

Flask - 重定向 url_for 错误

在我的烧瓶应用程序中为以下代码抛出错误。

@@app.route('/')
.....

return redirect(url_for('nextPage'),id=DBTable.id)


@app.route('/<path:id>')
@login_required
def nextPage(id):
return render_template('page2.html')               

Error - 
---------------------------------------------------------------------------
File "C:\Python27\lib\site-packages\werkzeug\routing.py", line 1607, in build
raise BuildError(endpoint, values, method)
BuildError: ('nextPage', {}, None)
<SocketIOServer fileno=116 address=0.0.0.0:5000>: Failed to handle request:
request = POST /landingPage HTTP/1.1 from ('127.0.0.1', 50287)
application = <flask.app.Flask object at 0x0000000002643B70>
Run Code Online (Sandbox Code Playgroud)

请帮助我解决上述问题

python flask flask-extensions flask-wtforms

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