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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

2704閲覧

jinja2でリストをPOSTリクエストできる?

hood

総合スコア351

Python 3.x

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

0グッド

0クリップ

投稿2019/02/14 12:28

編集2019/02/15 10:52

###jinja2でリストをPOSTリクエストできる?
jinja2ではデータをリストとしてPOSTリクエストできるのでしょうか?

pythonからhtmlにリストを展開することはできました。
しかし私はそのリストにwebアプリ上で(ブラウザ上で)操作を加えて、再びpythonのほうでデータを集めたいのです。

展開する際、以下のようなコード(一部略)を使いました。

<form method=post action="/clusterfeel"> <div class="form-group"> {% for i in range(clusterNum) %} <div class="row"> <div class="col"> <input type="number" name="clusterNum" class="form-control" value="{{ i }}"> </div> </div> {% endfor %} </div> <button type="submit" class="btn btn-primary">感情クラスタリング開始</button> </form>

ここで展開された値をブラウザ上でちょっと変化させ、それを再び回収したいのですが、単純思考で<input ・・・>name="clusterNum"を指定し、POSTリクエストをしようとしても
TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement
となってしまいました。

これはリストとしてデータを返すことができないという意味なのでしょうか?
リストデータを得ることができなかったら、かなりの時間をかけ作りあげてきたものが水の泡になってしまうのですが・・・
htmlからリストのデータをPOSTリクエストすることはできるのでしょうか?


追記
以下がpostリクエストをさばくメソッドです・・・

python

1@app.route('/clusterfeel', methods = ['GET','POST']) 2def cluster_feel(): 3 if request.method == 'POST': 4 if request.form['clusterNum'] is None: 5 #これがリストで返ってこないと詰む。 6 print(request.form['clusterNum']) 7 return render_template('entries/index.html') 8

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

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

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

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

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

t_obara

2019/02/15 06:04

ご提示されたエラーが発生している場所は、ご提示されたコードからですか?「The view function」となっているので、viewを担当する部分かと思いますので、そちらのコードもご提示されてはいかがでしょうか。 ちなみに、通常リストオブジェクトそのままをリクエストするのではなく、jsonなどテキストに置き換えることが一般的です。
hood

2019/02/15 10:44

回答ありがとうございます! あ、The view functionってhtmlのviewということかと勘違いしてました・・・・ pythonのコードのほうも、追記したいと思います。 >通常リストオブジェクトそのままをリクエストするのではなく、jsonなどテキストに置き換えることが一般的 なるほど・・・そうだったのですね・・・ リストで置き換えることのできる可能性があるのは救いです・・・もう少し調べてみようと思います!
gh640

2019/02/18 05:51

追記された関数を拝見しました。 `cluster_feel()` は GET と POST を受け付ける形にされていますが、関数内で GET に対応する処理が無いように見受けられます。エラーはフォームが送信(= POST )されたときではなく、 GET されたときに出ているのではありませんか?もしご記載のコードの下に GET を処理するコードが無ければそれを記述する必要があるものと思います。
hood

2019/02/18 13:20

回答ありがとうございます! ご指摘の通りGETの処理は書いておらず、修正しようとしたのですが、その前にいろいろいじっていたせいか原因不明にflaskアプリが動かなくなりまして、確認ができませんでした・・・ もうflaskはやめてtkinterに切り替えようかと思います・・・でも、いつかflaskアプリは作りたいと思っているので、ここでのアドバイスはしっかり胸に刻ませていただきます。 重ね重ねありがとうございました!
gh640

2019/03/02 09:24

こちらもありがとうございます!いえいえ、そうなのですね。 こちらの質問はある意味解決済みということですので、もしよかったら閉じてみてください :)
hood

2019/03/02 12:26

あ、そうですね...閉じるの忘れてた...教えてくれてありがとうございます!
guest

回答1

0

自己解決

jinjaではできないこともあるので、GUIに移行しました。コメントをくれたかた、どうもありがとうございました!

投稿2019/03/02 12:27

hood

総合スコア351

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問