URL の変更に関して非常に基本的な質問があります。http://example.com/createいくつかの入力フィールドを持つフォームを含むHTML ページがあるとします。http://example.com/show_listこの入力フィールドから、python のリスト値に基づいたリストを含む別の HTML ページを生成するために使用する python リストを作成したいと考えています。
したがって、ビューhttp://example.com/createは次のとおりです。
@app.route('/create', methods=['GET', 'POST'])
def create():
if request.method == 'POST':
some_list = parse_form_data_and_return_list(...)
return render_template( "show_list.html", some_list=some_list) #here's the problem!
return render_template( "create.html")
がユーザー入力をparse_form_data_and_return_list(...)受け取り、いくつかの値を含むリストを返すとしstringます。気になる行にコメントを追加しました。すぐに戻ってきますが、最初にhttp://example.com/show_list、ユーザー入力の後にロードする必要があるページ ( )のテンプレートを提供します。
{% block content %}
<ul class="list">
{% for item in some_list %}
<li>
{{ item }}
</li>
{% endfor %}
</ul>
{% endblock content %}
基本的にこれでうまくいきます。リストの値が Jinja テンプレートに「渡され」、リストが表示されます。
render_templateもう一度ルート メソッドを確認すると、ページを表示するためだけに行っていることがわかりshwo_listます。私にとって、これには1つの欠点があります。URL は に変更されませんがhttp://example.com/show_list、 のままhttp://example.com/createです。
そこで、次のテンプレートを直接レンダリングする代わりに、メソッド呼び出しで独自のrouteforshow_listと inを作成することを考えました。このような:create()redirect
@app.route('/show_list')
def tasklist_foo():
return render_template( "show_list.html" )
listしかし、この場合、オブジェクトを に渡す方法がわかりませんshow_list()。もちろん、リストのすべての項目を URL に解析することもできます (したがって、に投稿しますhttp://example.com/show_list) が、それは私がやりたいことではありません。
すでにお気づきかもしれませんが、私は Web 開発に関してかなりの初心者です。間違ったパターンを使用しただけか、トリックを実行する単純な API 関数が見つからなかったと思います。そこで、私の問題を解決する方法を教えてください (簡単に要約します): テンプレートをレンダリングし、メソッド/ルートで作成されたリストを使用するshow_listように URL を変更します。http://example.com/createhttp://example.com/show_listcreate()