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

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

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

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

Q&A

解決済

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

hood
hood

総合スコア351

Python 3.x

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

1回答

0グッド

0クリップ

2264閲覧

投稿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

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

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

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

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

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

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

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

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

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

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

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

回答1

0

自己解決

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

投稿2019/03/02 12:27

hood

総合スコア351

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

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

Python 3.x

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