質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1008閲覧

クエリストリングで使った値をもう一度使いたい。

morin

総合スコア57

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/05/08 08:45

output.htmlでもresult.htmlと同じfruitsの値で使うにはどうしたらいいでしょうか?
result.htmlの時は表示できましたが、output.htmlの時はできませんでした。

構成は以下の通りです。
templates
>index.html
>utput.html
>result.html
main1.py

html

1<!DOCTYPE html> 2<!-- index.html --> 3<html> 4<head> 5<meta charset="UTF-8"> 6<title>選択 - くじ引き</title> 7</head> 8<body> 9 <h1>くじ引き</h1> 10 <p>番号を選んで果物を受け取りましょう。</p> 11 <ul> 12 <li><a href="/result?fruit_no=1">1番</a></li> 13 <li><a href="/result?fruit_no=2">2番</a></li> 14 <li><a href="/result?fruit_no=3">3番</a></li> 15 </ul> 16</body> 17</html> 18

html

1<!-- result.html --> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8"> 6<title>結果 - くじ引き</title> 7</head> 8<body> 9 <h1>結果</h1> 10 <p><strong> {{ fruit }} </strong>が当たりました。</p> 11 <h1>次のページへ。<h1> 12 <form method="post" action="{{url_for("output")}}"> 13 <button type="submit">移動します。</button> 14 </form> 15 <p><a href="/">戻る</a></p> 16</body> 17</html> 18

html

1<!-- output.html --> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="utf-8"> 6<title>お名前の表示</title> 7</head> 8<body> 9 10 <p>フルーツの値は......{{ fruit }}</p> 11</body> 12</html> 13

python

1#main1.py 2from flask import Flask, render_template, request 3app = Flask(__name__) 4 5fruits = {'1': 'もも', '2': 'りんご', '3': 'みかん'} 6 7@app.route("/") 8def index(): 9 return render_template('index.html') 10 11 12@app.route("/result") 13def result(): 14 # 値を受け取る 15 fruit_no = request.args.get("fruit_no", "") 16 return render_template('result.html', fruit=fruits[fruit_no]) 17 18@app.route("/output") 19def output(): 20 fruit_no = request.args.get("fruit_no", "") 21 return render_template("output.html", fruit=fruits[fruit_no]) 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のように非表示項目に保持して渡せばよいかと思います。

Python

1#main1.py 2 3# 略 4 5@app.route("/result") 6def result(): 7 # 略 8 return render_template('result.html', fruit=fruits[fruit_no],fruit_no=fruit_no) # fruit_noも渡す 9 10@app.route("/output",methods=["GET", "POST"]) # POSTも受ける 11def output(): 12 fruit_no = request.form["fruit_no"] # hideen項目値を受け取る 13 return render_template("output.html", fruit=fruits[fruit_no])

html

1<!-- result.html --> 2 <form method="post" action="{{url_for("output")}}"> 3 <!-- hidden項目に fruit_no値を保持する --> 4 <input type="hidden" name="fruit_no" value="{{ fruit_no }}"> 5 <button type="submit">移動します。</button> 6 </form>

投稿2019/05/08 08:49

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morin

2019/05/08 12:30

回答ありがとうございます!! hiddenというのを初めて知りましたが、 これを使えば request.args.get()を繰り返すだけでデータを繋げられてシンプルに考えられていいですね! postを使わなくてもgetで全部できたんですけど(postがよくわからないですが。。。)、postを使った理由はなんですか??
can110

2019/05/08 12:32

質問コードで「<form method="post"」と指定されていたからだけです。getでも構わないですね。
morin

2019/05/08 12:45

そうでしたか! 使い分けがよくわからなくて全部getでやってますが、 これから区別できるように頑張ります! 協力ありがとうございました! またお願いします!^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問