Flask app提交目标=" _blank"仅在wtforms验证后形成

时间:2016-11-26 11:40:31

标签: python flask wtforms

在我的Flask应用中,我有一个使用void overlayImage(Mat* src, Mat* overlay, const cv::Point& location){ for (int y = max(location.y, 0); y < src->rows; ++y) { int fY = y - location.y; if (fY >= overlay->rows) break; for (int x = max(location.x, 0); x < src->cols; ++x) { int fX = x - location.x; if (fX >= overlay->cols) break; double opacity = ((double)overlay->data[fY * overlay->step + fX * overlay->channels() + 3]) / 255; for (int c = 0; opacity > 0 && c < src->channels(); ++c) { unsigned char overlayPx = overlay->data[fY * overlay->step + fX * overlay->channels() + c]; unsigned char srcPx = src->data[y * src->step + x * src->channels() + c]; src->data[y * src->step + src->channels() * x + c] = srcPx * (1. - opacity) + overlayPx * opacity; } } } } wtforms模板生成的表单。如果验证通过,我想在新标签中重定向,否则我想保持在同一页面上并显示错误。但是,如果我在表单中设置jinja,它会打开一个新选项卡,而不会传递验证,并在那里显示错误。删除target="_blank"不会打开新标签页。有没有办法实现这一点,而无需重写js中的整个验证?谢谢!

代码:

target="_blank"

的index.html:

from wtforms import Form, TextAreaField, StringField, validators

class SubmitForm(Form):
    field1 = StringField(u'field1', [validators.DataRequired()])
    field2 = TextAreaField(u'field2', [validators.DataRequired()])

@app.route('/', methods=['POST'])
def sub():
    form = SubmitForm(request.form)
    if request.method == 'POST' and form.validate():
        # great success
        return redirect('/my_redirect_uri')
    return render_template('index.html', form=form)

@app.route('/')
def layout():
    return render_template('index.html', form=SubmitForm())

_formhelpers.html (不是那么相关,但为了完整性):

{% from "_formhelpers.html" import render_field %}
<form method=post action="/" target="_blank">
  <dl>
    {{ render_field(form.field1) }}
    {{ render_field(form.field2) }}
  </dl>
  <p><input type=submit value=Submit>
</form>

0 个答案:

没有答案