FLASK Web应用程序(动态)改变顺序工作流程

时间:2017-11-03 09:09:02

标签: python flask web-applications flask-wtforms

我需要构建一个代表顺序工作流的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)?

1 个答案:

答案 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"