gpt4 book ai didi

python - Flask WTForms 表单未提交但未输出验证错误

转载 作者:行者123 更新时间:2023-11-28 19:22:42 25 4
gpt4 key购买 nike

我正在尝试使用 Flask 创建一个基本的会计包,但我有点难以验证特定的表单。它适用于同一个应用程序中的另一种形式,但出于某种原因我无法弄清楚为什么这个不能正常工作。表单在网络浏览器中显示正常,我可以正常输入数据,但是当我提交表单时,它似乎只是重新加载页面。我的数据库没有得到更新,经过一些挖掘我发现我的 if form.validate_on_submit() 没有捕捉到任何东西。

堆栈跟踪中也没有抛出错误。

我将在下面发布我的文件的相关部分。

我的views.py:

@app.route('/dashboard/<nickname>/work-orders/add/', methods = ['GET', 'POST'])
@login_required
def work_orders_add(nickname):
ca = check_active(nickname)
if ca[1] == True:
form = AddWorkOrderForm()
u = User.query.get(current_user.id)
c = u.contacts.order_by('name').all()
form.requestor.choices = [(contact, contact.name) for contact in c]
if form.validate_on_submit():
db.session.add(WorkOrder(requestor = form.requestor.data,
date = form.date.data,
notes = form.notes.data,
total = 0.00,
completed = form.completed.data,
user = g.user))
db.session.commit()
return redirect(url_for('work_orders', nickname=current_user.nickname))
elif request.method != "POST":
form.date.data = datetime.date.today()
else: return "didn't work"
return render_template('work_orders_add.html',
user = ca[0],
title = "New Work Order",
form = form)
else: return redirect(url_for('work_orders', nickname=current_user.nickname))

我的forms.py:

class AddWorkOrderForm(Form)
requestor = SelectField('requestor', coerce=unicode)
date = DateField('date')
notes = TextAreaField('notes')
completed = BooleanField('completed', default = False)

我的models.py:

class WorkOrder(db.Model):
__tablename__ = 'workorder'
id = db.Column(db.Integer, primary_key = True)
date = db.Column(db.String(64))
notes = db.Column(db.String(1024))
total = db.Column(db.Float)
completed = db.Column(db.Boolean)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
contact_id = db.Column(db.Integer, db.ForeignKey('contact.id'))
items = db.relationship('WorkOrderItem', primaryjoin="WorkOrder.id==WorkOrderItem.work_order_id", backref = 'order')

def __repr__(self):
return '<WorkOrder %r>' % (self.id)

我的 HTML 文件:

{% extends "_is_logged.html" %}
{% block content %}
<h1>{{ title }}</h1>
<form action="" method="post" name="work_order">
{{ form.hidden_tag() }}
<p>Requestor: {{ form.requestor() }}</p>
<p>Date: {{ form.date() }}</p>
<p>Notes: {{ form.notes(size=70) }}</p>
<p>Completed: {{ form.completed() }}</p>
<p><input type="submit" value="Add Work Order"></p>
</form>
{% endblock %}

谢谢。

最佳答案

我想 @Iarissa 很久以前就发现了它。该表单没有操作值,因此我建议您首先更改此表单:

<form action="" method="post" name="work_order">

进入:

<form action="{{url_for('work_orders_add')}}" method="POST" name="work_order">

同样从给出的代码来看,函数 work_orders_add(nickname) 似乎没有正确缩进。 if 语句应该包含在函数中,这样您就可以:

@app.route('/dashboard/<nickname>/work-orders/add/', methods = ['GET', 'POST'])
@login_required
def work_orders_add(nickname):
ca = check_active(nickname)
if ca[1] == True:
form = AddWorkOrderForm()
u = User.query.get(current_user.id)
c = u.contacts.order_by('name').all()
form.requestor.choices = [(contact, contact.name) for contact in c]
if form.validate_on_submit():

关于python - Flask WTForms 表单未提交但未输出验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21209608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com