我需要构建一个代表顺序工作流的Web应用程序。在每个页面上,用户填写表单,并在提交时,她被重定向到下一页。表格并不相互依赖。
例如,假设我们有6页,A, B, C, D, E, F
工作流程将是
A -> B -> C -> D -> E -> F
然而,很有可能序列的顺序会随着时间的推移而频繁变化,甚至可能会根据动态信息为每个用户重新组合。例如,新序列可以是(重新排序并省略2个步骤)
B -> A -> C -> F
因此,我希望避免将序列硬编码到应用程序中,例如按照建议here。
我目前的方法是拥有像这样的调度员函数next()
def next(current_page)
if current_page == "/step_a":
return redirect(url_for("/step_b"))
elif current_page == "/step_b":
return redirect(url_for("/step_c"))
...
并让每个视图函数返回
return next(request.url_rule.rule)
是否有更好的(最佳实践?)方式来定义(并轻松适应)这样的顺序工作流程,特别是在没有将其硬编码到视图函数中时(如建议的here)?
答案 0 :(得分:0)
根据您的问题陈述,可能有多种方法可以解决它。一,你已经说过了。其他可能是内部路由。这将涉及请求包装器。像这样:
from flask import Flask, redirect, request, render_template
app = Flask("the_flask_module")
@app.route('/', methods=["GET", "POST"])
def post_redirect_get():
if request.method == "GET":
return render_template("post_redirect_get.html")
else:
# Use said data.
return redirect("target", code=303)
@app.route("/target")
def target():
return "I'm the redirected function"