python - 使用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 文件,因此这三个按钮可以将用户重定向到三个相同的页面。
谢谢
解决方案
表格.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)
而现在,第二个问题解决了。
推荐阅读
- rust - 如何在Rust中使用前导零打印2位浮点数的整数部分?
- typescript - 如何在 Like Operator 中使用 Escape 命令。我无法在 react native 中找到 '%' 和 '_' 的结果
- visual-studio-code - exec: "code": $PATH 中找不到可执行文件
- node.js - 我已经构建了一个带有 morgan 模块的 nodejs 应用程序作为记录器
- node.js - 如何在节点 OIDC 提供程序中使用令牌端点获取 access_token
- python - Multiprocessing.Process 运行整个脚本,而不仅仅是 python 中的目标函数
- arrays - 底层数组如何在 Golang 中的“切片”中表现
- pyspark - 如何在分组值上将一行的值与 PySpark 中的所有其他行进行比较
- php - php 中的 strip_tags 没有帮助,需要更好的选择
- javascript - ReactJS Canvas 没有 captureStream