2017-11-03 14 views
0

順次ワークフローを表すWebアプリケーションを構築する必要があります。各ページで、ユーザーはフォームを入力し、送信時には、次のページにリダイレクトされます。フォームはお互いに依存しません。(動的に)順次ワークフローを変更するFLASK Webアプリケーション

したがって、たとえば、ワークフローがまだ

A -> B -> C -> D -> E -> F 

だろうA, B, C, D, E, F 、我々は6ページを持っていると言う、配列の順序は時間をかけて頻繁に変更、あるいはなることを非常によく可能です動的情報に基づいてユーザごとに新しく作成されます。新しいシーケンスは、例えば、(再注文され、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

問題の記述によれば、それを解決するには1つ以上の方法があります。あなたがすでに述べた1つ。他は内部ルーティングのようなものかもしれません。これには要求ラッパーが関係します。このようなもの:

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" 
関連する問題