Flask提交按钮提交所有表单,而不是一个表单

2024-09-25 08:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的一页里用了两张表格一张用来结帐,一张用来寄回信。 但问题是当我提交其中一份的时候,另一份也被提交了!显示闪光按摩。所以我有两个闪光按摩! 这变得更复杂了,因为我正在检查一些条件来显示第一个表单,在这种情况下,哪一个表单不再显示,我有两个flash消息!在

@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格式:

^{pr2}$

窗体类:

class EditTicket(FlaskForm):
    ticketMassage = TextAreaField('متن پیام:',
                              description=u'پاسخ خود را بنویسید.',
                              validators=[data_required(), Length(min=20, max=500)], )
    submit = SubmitField('ویرایش تیکت')


class CloseTicket(FlaskForm):
    submitCloseTicket = SubmitField('بستن تیکت')

Tags: 表单ifupdateticketeditoneticketsflash
2条回答

使用id属性呈现表单标记,对于submit和input标记使用form属性。在

<form id="edit-ticket">
    {{ form.submit(form="edit-ticket") }}

The form element that the input element is associated with (its form owner). The value of the attribute must be an id of a element in the same document. If this attribute isn't used, the element is associated with its nearest ancestor element, if any. This attribute lets you to place elements anywhere within a document, not just as descendants of form elements.

更新submit使用不同的名称,然后在views.pyif close_form.validate_on_submit() and close_form.close.data:中使用不同的名称

^{pr2}$

编辑-票证.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") }}

在表单上执行操作,而不是将其留空:

<form method="post" action="/close-ticket"> ... </form>

<form method="post" action="/edit-ticket"> ... </form>

定义显式函数来处理每个操作。一个动作,一个功能-保持简单。分离并重新使用每个登录的逻辑。在

^{pr2}$

相关问题 更多 >