Python Flask-Submit按钮提交所有表单,而不是一个表单
我在我的一页中使用了两个表单,一个用于结账,另一个用于发送回复。 但问题是当我提交其中一个时,另一个也提交了!并显示闪光按摩。所以我有两个闪光按摩! 这变得更复杂了,因为我正在检查一些条件来显示第一种形式,在这种情况下,哪种形式甚至不再出现,我有两次闪光按摩Python Flask-Submit按钮提交所有表单,而不是一个表单,python,html,flask,flask-wtforms,wtforms,Python,Html,Flask,Flask Wtforms,Wtforms,我在我的一页中使用了两个表单,一个用于结账,另一个用于发送回复。 但问题是当我提交其中一个时,另一个也提交了!并显示闪光按摩。所以我有两个闪光按摩! 这变得更复杂了,因为我正在检查一些条件来显示第一种形式,在这种情况下,哪种形式甚至不再出现,我有两次闪光按摩 @app.route('/edit-ticket', methods=['GET', 'POST']) def edit_ticket(): if session['logged_in'] == True: trackingNumb
@app.route('/edit-ticket', methods=['GET', 'POST'])
def edit_ticket():
if session['logged_in'] == True:
trackingNumberLink = int(request.args.get('trackingNumber'))
closeForm = CloseTicket()
editForm = EditTicket()
GetTicketStatus = tickets.find_one({"trackingNumber": trackingNumberLink})
if closeForm.validate_on_submit():
tickets.update_one({"trackingNumber": trackingNumberLink},
{"$set": {"status": "پاسخ داده شده", "order": 2}})
flash(u"تیکت مورد نظر با موفقیت بسته شد.")
if editForm.validate_on_submit():
replyDate = jdatetime.datetime.now()
tickets.update_one({"trackingNumber": trackingNumberLink},
{"$set": {"status": "در حال بررسی", "order": 1}})
tickets.update_one({"trackingNumber": trackingNumberLink},
{"$push": {"replies": {"rep": {"mass": editForm.ticketMassage.data,
"date": replyDate.strftime("%H:%M:%S %d-%m-%y "),
"HowSent": "user"}}}})
flash(u"پاسخ با موفقیت ارسال شد.")
return render_template('edit-ticket.html', Title="ویرایش تیکت", closeForm=closeForm,
editForm=editForm, CanUserCloseTicket=GetTicketStatus)
else:
return redirect(url_for('Login'))
HTML:
使用id属性呈现表单标记,对于提交和输入标记,使用表单属性
<form id="edit-ticket">
{{ form.submit(form="edit-ticket") }}
edit-ticket.html
<form method="post" id="edit-form" novalidate></form>
<form method="post" id="close-form" novalidate></form>
{{ edit_form.csrf_token(form="edit-form") }}
{{ close_form.csrf_token(form="close-form") }}
{{ edit_form.ticket_message(form="edit-form") }}
{{ edit_form.edit(form="edit-form") }}
{{ close_form.message(form="close-form") }}
{{ close_form.close(form="close-form") }}
{{edit_form.csrf_令牌(form=“edit form”)}
{{close_form.csrf_令牌(form=“close form”)}
{{edit_form.ticket_message(form=“edit form”)}
{{edit_form.edit(form=“edit form”)}
{{close_form.message(form=“close form”)}
{{close_form.close(form=“close form”)}
在表单上添加操作,而不是将其留空:
<form method="post" action="/close-ticket"> ... </form>
<form method="post" action="/edit-ticket"> ... </form>
你好,罗伊,谢谢你的回复。我尝试了你的建议,在两个表单中都添加了id和submit bottoms,但我仍然有相同的问题。表单元素也应该具有
form=”“
属性`我按照你说的做了,但仍然没有运气。看,当我提交一个表单时,它也会进入另一个表单validate_on_submit()条件,这就是为什么我有两个flash消息,因为在某些情况下,我的页面中没有两个表单!我已经更新了答案,如果关闭表单。在提交()上验证表单并关闭表单。关闭。数据:
解决了问题。非常感谢更新。问题解决了。但我仍然有一点冲突,那就是:当我在我的页面中准备好两个表单时,我点击close ticket,它会检查edit ticket form并给我验证错误!截图:谢谢你的回复。我很感谢你的帮助,但我需要一页一张表格。你写的这个例子很好,但不是我写的。
from flask import Flask, render_template
from flask_wtf import FlaskForm, CSRFProtect
from wtforms.fields import SubmitField, TextAreaField
app = Flask(__name__)
app.config['SECRET_KEY'] = '^%huYtFd90;90jjj'
app.config['UPLOADED_FILES'] = 'static/files'
csrf = CSRFProtect(app)
class EditTicketForm(FlaskForm):
ticket_message = TextAreaField()
edit = SubmitField()
class CloseTicketForm(FlaskForm):
message = TextAreaField()
close = SubmitField()
@app.route('/edit-ticket', methods=['GET', 'POST'])
def edit_ticket():
close_form = CloseTicketForm()
edit_form = EditTicketForm()
if close_form.is_submitted() and close_form.close.data:
if close_form.validate():
x = close_form.message.data
return x.upper()
if edit_form.is_submitted() and edit_form.edit.data:
if edit_form.validate():
y = edit_form.ticket_message.data
return y.upper()
return render_template('edit-ticket.html', close_form=close_form, edit_form=edit_form)
if __name__ == "__main__":
app.run(debug=True)
<form method="post" id="edit-form" novalidate></form>
<form method="post" id="close-form" novalidate></form>
{{ edit_form.csrf_token(form="edit-form") }}
{{ close_form.csrf_token(form="close-form") }}
{{ edit_form.ticket_message(form="edit-form") }}
{{ edit_form.edit(form="edit-form") }}
{{ close_form.message(form="close-form") }}
{{ close_form.close(form="close-form") }}
<form method="post" action="/close-ticket"> ... </form>
<form method="post" action="/edit-ticket"> ... </form>
@app.route('/close-ticket', methods=['POST'])
def close_ticket():
if session['logged_in'] != True:
return redirect(url_for('Login'))
# closeForm handling, etc....
@app.route('/edit-ticket', methods=['POST'])
def edit_ticket():
if session['logged_in'] != True:
return redirect(url_for('Login'))
# editForm handling, etc....