具有(动态)改变顺序的FLASK Web应用程序

2024-04-26 03:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要构建一个表示连续工作流的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)

有没有更好的(最佳实践?)在flask中如何定义(并且很容易地适应)这样一个连续的工作流,特别是不需要将其硬编码到视图函数中(如建议的here)?你知道吗


Tags: 函数用户应用程序url编码forreturnhere
1条回答
网友
1楼 · 发布于 2024-04-26 03:53:08

根据你的问题陈述,解决问题的方法可能不止一种。一个,你已经说过了。另一种可能是内部路由。这将涉及一个请求包装器。像这样:

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"

相关问题 更多 >

    热门问题