前提・実現したいこと
PythonのBottleとVue.jsを組合せて、Webアプリケーションを作ろうとしています。
(コロナ自粛を機に勉強を始めた超初心者です...)
以下を実現したいのですが、どうにもうまく行きません。
①Bottleのテンプレート(ラジオボタン)に入力したデータを元に計算して、
その結果をテンプレート側に表示する。
②入力時には計算結果欄を表示せず、送信ボタンをクリックしたら欄を表示する。
発生している問題・エラーメッセージ
上記の②を実現しようと、「v-show」「v-if」などを試していますが、
送信ボタンをクリックすると、ほんの一瞬だけ結果が表示されてすぐに消えてしまいます。
「v-show」を削除すると計算結果を表示することは出来ますが、
空欄の計算結果欄を出したくないのです...
該当のソースコード
python
1from bottle import route, run, template, request 2 3@route('/test') 4def test(): 5 return template('template', additon = '', multiplication= '' ) 6 7@route('/test', method='POST') 8def test(): 9 data1 = int(request.forms.data1_str) 10 data2 = int(request.forms.data2_str) 11 return template('template', additon = data1 + data2, multiplication= data1 * data2 ) 12 13run(host='localhost', port=8080, reloader=True, debug=True)
tpl
1<body> 2<div id="app"> 3 <form method="post" action="/test" @submit="onSubmit"> 4 <p> 5 データ1: 6 <label><input type="radio" name="data1_str" value="1" required>1</label> 7 <label><input type="radio" name="data1_str" value="2">2</label> 8 <label><input type="radio" name="data1_str" value="3">3</label> 9 </br> 10 データ2: 11 <label><input type="radio" name="data2_str" value="1" required>1</label> 12 <label><input type="radio" name="data2_str" value="2">2</label> 13 <label><input type="radio" name="data2_str" value="3">3</label> 14 </p> 15 <input type="submit" value="送信する"> 16 </form> 17 18 <div v-show="show"> 19 <p> 20 ------- 計算結果の表示 -------</br> 21 </p> 22 データ1とデータ2を...</br> 23 足すと :{{additon}}</br> 24 かけると:{{multiplication}}</br> 25 </p> 26 </div> 27</div> 28 29<script src="https://cdn.jsdelivr.net/npm/vue@2.6.6/dist/vue.js"></script> 30<script> 31 new Vue({ 32 el: '#app', 33 data: {show: false}, 34 methods: {onSubmit: function () { this.show = true }}, 35 }); 36</script> 37 38</body> 39</html>
試したこと
「v-show」を削除すると計算結果を表示することは出来ます。
その場合の計算結果はあっているので、データの受け渡し時に何か問題が発生しているんだろうな...と思っています。
そもそも、Bottleをこのように使うのが誤りなのかもしれず、その場合には申し訳ありません。
初歩的な質問ですみませんが、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/13 01:14