标签: wtforms

Flask - WTForm - 将表单保存到db

我有保存表单(wtf)到(sqlalchemy)db的问题,表单正在渲染,但提交后没有任何反应...

例如:

127.0.0.1 - - [30/Dec/2013 10:30:24] "POST /add/ HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)

我试图在没有验证器的情况下保存

例如:

name = TextField('Task Name')
Run Code Online (Sandbox Code Playgroud)

我试图以其他方式保存表格:

if request.method == 'POST' and form.validate():
            new_task = Tasks(
                         form.name.data,
                         form.due_date.data,
                         form.priority.data,
                         form.posted_date.data,
                         session['user_id'],
                         form.category.data,
                         form.super_category.data,
                         form.description.data
                        )
            db.session.add(new_task)
            db.session.commit()  
Run Code Online (Sandbox Code Playgroud)

以下代码:

楷模 :

# -*- coding: utf-8; -*-

from app import db
import datetime


class Tasks(db.Model):

    __tablename__ = "tasks"

    task_id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(255),nullable=False)
    description = db.Column(db.Text,nullable=False)
    priority = db.Column(db.Integer,nullable=False)
    posted_date = db.Column(db.DATE,nullable=False)
    status = db.Column(db.Integer,default=1,nullable=False)
    category = db.Column(db.String(255),nullable=False)
    super_category …
Run Code Online (Sandbox Code Playgroud)

python flask wtforms flask-sqlalchemy flask-wtforms

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

导入Flask WTF表单时ImportError

我看不到我要去哪里错了。我安装了最新的WTF表单,但是仍然出现此错误。

方法:

from flask.ext.wtf import Form
from wtforms import PasswordField, validators, fields
from wtforms.fields import TextField, BooleanField
from wtforms.validators import Required, Email, EqualTo
Run Code Online (Sandbox Code Playgroud)

结果:

Traceback (most recent call last):

  File "/bin/user_wsgi_wrapper.py", line 67, in __call__
self.error_log_file.logger.exception("Error running WSGI application")
  File "/usr/lib/python3.3/logging/__init__.py", line 1269, in exception
self.error(msg, *args, **kwargs)
  File "/usr/lib/python3.3/logging/__init__.py", line 1262, in error
self._log(ERROR, msg, args, **kwargs)
  File "/usr/lib/python3.3/logging/__init__.py", line 1368, in _log
self.handle(record)
  File "/usr/lib/python3.3/logging/__init__.py", line 1377, in handle
if (not self.disabled) and self.filter(record):
 File "/usr/lib/python3.3/logflask_wtf
wtformsging/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x wtforms

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

WTForms的长排序下拉列表

我想按字母顺序创建一个美国州的下拉列表。我已经将状态元组转换为OrderedDict,并将其输入到WTForms SelectField中。

import collections
import wtforms

STATE_ABBREV = ('AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 
                'HI', 'ID', 'IL', 'IN', 'IO', 'KS', 'KY', 'LA', 'ME', 'MD', 
                'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 
                'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 
                'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY')

def list_to_ordered_pairs(input_list):
    ordered_pairs = collections.OrderedDict()
    for item in input_list:
        ordered_pairs[item] = item
    return ordered_pairs

state_pairs = list_to_ordered_pairs(STATE_ABBREV)

class MyForm(wtforms.Form):
    state = wtforms.SelectField(label='State', …
Run Code Online (Sandbox Code Playgroud)

python forms wtforms

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

Flask-WTF表单成功发布,但验证永远不会发生

我已经在WTF表格上挣扎了很长一段时间了.但是这个错误,似乎永远不会消失.我什么时候尝试运行此代码,表单永远不会验证

意见:

@bundle.route('/content/add/', methods=['GET', 'POST'])
@bundle.route('/content/add', methods=['GET', 'POST'])
@bundle.route('/content/edit/<posturl>/', methods=['GET', 'POST'])
@bundle.route('/content/edit/<posturl>', methods=['GET', 'POST'])
@fas_login_required
def addcontent(posturl=None):
    form = CreateContent()
    form_action = url_for('content.addcontent')
    if posturl is not None:
        content = Content.query.filter_by(slug=posturl).first_or_404()
        form = CreateContent(obj=content)
        if form.slug.data == posturl and request.method == 'POST' and form.validate():
            form.populate_obj(content)
            db.session.commit()
            return redirect(url_for('content.addcontent',
                                    posturl=posturl, updated="True"))

    else:
        if request.method == 'POST' and form.validate():
            query = Content(form.title.data,
                            form.slug.data,
                            form.description.data,
                            form.media_added_ids.data,
                            form.active.data,
                            form.tags.data,
                            g.fas_user['username'],
                            form.type_content.data
                            )
            try:
                db.session.add(query)
                db.session.commit()
                # Duplicate entry
            except Exception as e:
                return str(e) …
Run Code Online (Sandbox Code Playgroud)

python wtforms flask-sqlalchemy flask-wtforms

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

使用SelectField的WTForms帖子不起作用

我有一个表单,并在提交时我不断收到以下错误.我无法弄清楚问题是什么,但我认为这与selectfield有关,因为这是我第一次使用它而且之前没有遇到任何问题.

这是我的表格:

class CampaignForm(Form):
    name = StringField('Campaign Name', validators=[DataRequired])
    start = DateField('Start', validators=[DataRequired], format='%d-%m-%Y')
    end = DateField('End', validators=[DataRequired], format='%d-%m-%Y')
    budget = IntegerField('Budget', validators=[DataRequired])
    customer_id = SelectField(
        'Customer', validators=[DataRequired], coerce=int)
Run Code Online (Sandbox Code Playgroud)

这是我的观点,GET有效,但我在POST时遇到错误:

@app.route('/campaign/add', methods=['GET', 'POST'])
@login_required
def campaign_add():
    form = CampaignForm()

    form.customer_id.choices = [
        (customer.id, customer.name)
        for customer in current_user.account.customers]

    if form.validate_on_submit():
        campaign = Campaign(name=form.name.data,
                            start=form.start.data,
                            end=form.end.data,
                            budget=form.budget.data,
                            account_id=current_user.account_id,
                            customer_id=form.customer_id.data,
                            created_at=datetime.now(),
                            created_by=current_user.id,
                            updated_at=datetime.now(),
                            updated_by=current_user.id)

        db.session.add(campaign)
        db.session.commit()
        return redirect(url_for('campaigns'))

    return render_template('campaigns/add.html', form=form)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误,我无法弄清楚出了什么问题.

Traceback (most recent call last):
  File "/home/lee/Code/fastplan/venv/lib/python3.4/site-packages/tornado/web.py", line 1309, in …
Run Code Online (Sandbox Code Playgroud)

python flask wtforms

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

RECAPTCHA_PUBLIC_KEY配置未使用Flask-WTForms设置

我已经反复阅读文档,并且当联系页面尝试使用带有wtforms的Recaptcha加载Flask时,仍然会收到'RuntimeError:RECAPTCHA_PUBLIC_KEY config not set'.我愿意接受任何建议.我使用Google的ReCaptcha 2,FWIW在Ubuntu 14.04上运行Flask.

编辑:此问题已通过dirn的建议解决,但我现在收到KeyError消息,尽管正确输入了公钥和私钥.

这是我的堆栈跟踪.

File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__return self.wsgi_app(environ, start_response)
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/matt/work/bsureunion/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/matt/work/bsureunion/run.py", …
Run Code Online (Sandbox Code Playgroud)

python recaptcha flask wtforms flask-wtforms

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

wtforms,在构造函数中生成字段

我需要在表单的构造函数中生成我的字段,因为所需的字段数可能会有所不同.我认为我目前的解决方案是问题所在.当我尝试在模板中展开表单时,我得到一个例外

AttributeError:'UnboundField'对象没有属性' call '

这段代码有什么问题?

class DriverTemplateSchedueForm(Form):
    def __init__(self, per_day=30, **kwargs):
        self.per_day = per_day
        ages = model.Agency.query.all()
        ages = [(a.id, a.name) for a in ages]
        self.days = [[[]] * per_day] * 7
        for d in range(7):
            for i in range(per_day):
                lbl = 'item_' + str(d) + '_' + str(i)
                self.__dict__[lbl] = SelectField(lbl, choices=ages)
                self.days[d][i] = self.__dict__[lbl]
        for day in self.days:
            print(day)

        Form.__init__(self, **kwargs)
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask wtforms

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

Flask和WTForms:如何使用多个提交按钮制作表单?

想象一下,我需要建立一个这样的旅行计划表:

Going from [_Picadily_Circus____]
Going to [_Marylebone_____]
(Starting by) (Arriving by) [5]:[30][pm]
Run Code Online (Sandbox Code Playgroud)

两者(开始)(到达)是提交按钮.这个例子是人为的,以显示一个双按钮用例,所以我们不讨论可用性.

我如何使用Flask和WTForms做到这一点?

如何查看实际按下了哪个按钮?

python flask wtforms flask-wtforms

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

使用Flask-WTF时,从字典中填充WTForms表单

我有一个Flask-WTF表单,需要从字典中填充,我将其传入**kwargs.该表单用于使用该POST方法访问的Flask路径.表单未验证,字段的值为None.如何将数据字典传递给我的表单然后验证它?

@app.route('/submit', methods=['POST'])
def submit():
    data = {'name': 'eee'}
    form = MyForm(**data)
    print(form.validate())  # False, name is required
    print(form.name.data)  # None
Run Code Online (Sandbox Code Playgroud)

python flask wtforms flask-wtforms

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

确定WTForms表单未验证的原因

我打了电话form.validate_on_submit(),但它又回来了False.如何找出表单未验证的原因?

python flask wtforms flask-wtforms

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