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

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

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

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

render_templateでhtmlにjsonデータを渡したい

hood
hood

総合スコア351

Flask

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0グッド

0クリップ

5837閲覧

投稿2019/02/16 07:27

###render_templateでhtmlにjsonデータを渡したい
リストオブジェクトを「viewを担当するpythonファイル」と、「htmlファイル」の間で送受信したいです。
そのためにはjsonデータを使う必要があると聞きました。

なので、手始めに私は「viewを担当するpythonファイル」でリストオブジェクトをjsonデータに変えました。
しかしいざrender_templateを書く段になって、「jsonデータをhtmlに渡したあと、どうやってリストとして展開すればいいのだろうか」と詰まってしまいました。

ググっても検索能力の低さからか、役たちそうなサイトは見つからず、いっそ聞いてしまおうと思い質問させていただきました。

話を単純にするため以下に最小限のコードを書きます。jsonを受け取ったhtmlはどうやってそのデータを解凍?し展開すればよいのでしょう?

python

1#jsonのデータを使いhtmlをレンダリングする。 2@@app.route(・・・) 3def sample(): 4---- 5dic ={#jsonデータを作る。 6 "sen":sentence,#それぞれリストとなっている。 7 "clu":cluster 8 } 9return render_template('clus_feel.html', getjson = dic)#一応getjsonを指定しておいたけど、htmlでどういうふうに使えばいいのかわからない・・・

html

1 2  <div class="row"> 3 <div class="col"> 4 <input type="text" class="form-control" value="jsonにしたsentenceを入れたい"> 5 </div> 6 <div class="col"> 7 <input type="number" class="form-control" value="jsonにしたclusterを入れたい"> 8 </div> 9 </div>

htmlの表示のイメージとして以下のようになってくれれば、万々歳です
sentence[1] cluster[1]
sentence[2] cluster[2]
sentence[3] cluster[3]
・・・・

大変初歩的なことをお聞きしていると思いますので、直接的な回答でなくても、参考とするべきサイトや、どんな勉強が足りないのかの情報だけでも大歓迎です。

このままでは文豪ドストエフスキーが書いたように、山盛りになった玉を一つづつ向こう側に運び、それをまたこっちに運ぶのを繰り返すような、無限の輪廻の中です・・・

どうかご助言いただきたいです・・・

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

例えば次のように書くとよいのではないかと思います。

patch

1- return render_template('clus_feel.html', getjson = dic)#一応getjsonを指定しておいたけど、htmlでどういうふうに使えばいいのかわからない・・・ 2+ return render_template('clus_feel.html', pairs=zip(sentence, cluster))

html

1{% for s, c in pairs %} 2 <div class="row"> 3 <div class="col"> 4 <input type="text" class="form-control" value="{{ s }}"> 5 </div> 6 <div class="col"> 7 <input type="number" class="form-control" value="{{ c }}"> 8 </div> 9 </div> 10{% endfor %}

尚、前提として、 sentencecluster は各要素がすべて strlist だと想定しています。

以下補足です。

Jinja2 で 2 つの list を同時に回すかんたんな方法はデフォルトで用意されていなかった気がしますので(調べずに言っているので間違っている可能性があります)、 sentencecluster の各要素が関係しているのであれば、テンプレートに渡す際は dict ではなく、各要素が sentencecluster の各要素のペアになった list (厳密には list ではありませんが説明を単純化するために list と呼びます)として渡した方が、テンプレート側での処理がかんたんになるかと思います。

そうではなく、あくまでもテンプレートには dict として変数を渡したいということであれば、各要素は getjson['sen'][0] 等でアクセスできるかと思いますので、そのようにされるとよいのではないでしょうか。

参考:

投稿2019/02/18 05:44

編集2019/02/18 08:56
gh640

総合スコア1407

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

hood

2019/02/18 13:26

回答ありがとうございます! 私が書いておくべきだったので申し訳ないのですが、実はzipはすでに試しまして、二つのリストを展開することには成功していました。それをpostメソッドで回収することができなかったので、jsonを使おうということになったのです・・・ 前の投稿にもgh640さんには回答していただきましたね・・・そこでも書いた通り、私の実力ではwebアプリは少しきついと思ったので、guiに切り替えようと思います。 親切にも二つの投稿を考えてくださり、本当にありがとうございました・・・!
gh640

2019/03/02 09:22

すみません、コメントをいただいたのに反応が遅くなってしまいました。。。そうでしたか! はい、またチャンスがあればチャレンジされてみてください :D

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Flask

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。