首页 > 解决方案 > 使用flask和wtforms在单个页面中的多个提交按钮

问题描述

我正在编写一个costom 404处理页面,需要三个按钮(“返回上一页”;“返回首页”;“访问我们的帮助中心”),但是我遇到了一些麻烦,这就是我想出的和我想解决的问题

我的 404.HTML

{% extends "layout.html"%}
{% block content %}
  <h1>OOF</h1>
  <p>We are sorry, but you have reached this page in error.</p>
  <p>Please try the action again and if the problem continues, contact Customer Support.</p>
  <p>404 Error - Document not found</p>
  
    <form method="POST" action="">
      {{ form.hidden_tag() }}
      <fieldset class="form-group">
        <legend class="border-bottom mb-4"></legend>
        
        
      </fieldset>
        {{ form.submit(class="btn btn-outline-info") }}
        {{ form.submit(class="btn btn-outline-info") }}
        {{ form.submit(class="btn btn-outline-info") }}
    </form>
    
{% endblock content %}

我的表格.py

class PreviousPage(FlaskForm):
  submit = SubmitField("Go back to the previous page")
  submit = SubmitField("Go to Home")
  submit = SubmitField("Visit our Help Center")

我的 routes.py(主要功能)

@app.errorhandler(404)
def page_not_found(e):
  form=PreviousPage()
  if form.validate_on_submit():
    return redirect(url_for('home'))
  return render_template('404.html',form=form)

这是我得到 的我的 404 页面的图片

该按钮的布局完全符合我的预期,但按钮上的文本不正确,因为它全部打印出最后一个按钮的文本。我面临的另一个问题是不知道如何修改我的 routes.py 文件,因此这三个按钮可以将用户重定向到三个相同的页面。

谢谢

标签: pythonflaskwtformsrepl.it

解决方案


表格.py

class PreviousPage(FlaskForm):
  submit_pre = SubmitField("Go back to the previous page")
  submit_home = SubmitField("Go to Home")
  submit_help = SubmitField("Visit our Help Center")

404.HTML

{% extends "layout.html"%}
{% block content %}
  <h1>OOF</h1>
  <p>We are sorry, but you have reached this page in error.</p>
  <p>Please try the action again and if the problem continues, contact Customer Support.</p>
  <p>404 Error - Document not found</p>
  
    <form method="POST" action="">
      {{ form.hidden_tag() }}
      <fieldset class="form-group">
        <legend class="border-bottom mb-4"></legend>
        
        
      </fieldset>
        {{ form.submit_pre(class="btn btn-outline-info") }}
        {{ form.submit_home(class="btn btn-outline-info") }}
        {{ form.submit_help(class="btn btn-outline-info") }}
    </form>
    
{% endblock content %}

现在,第一个问题解决了。

@app.errorhandler(404)
def page_not_found(e):
    form = PreviousPage()
    if form.validate_on_submit():
        if form.submit_pre.data:
            return redirect(url_for('pre_page'))
        if form.submit_home.data:
            return redirect(url_for('home_page'))
        if form.submit_help.data:
            return redirect(url_for('help_page'))
    return render_template('404.html', form=form)

而现在,第二个问题解决了。


推荐阅读