Flaskを使用して動作しております。
ボタンを押すと、input boxにあるデータベースのテーブルの値を取得し、
そのテーブルの値を使用して、SQliteのデータを読みに行き(ここで、おそらくPythonに値を渡す)、
iframeにデータを更新したく思います。
打ち消し線~~①:ボタンを押すと、Javascriptが実行され、inputボックスの値を取得
②:値をPythonへ(flask)
③:PythonでSQliteに接続し、データを取得
④:同ページ内のiframe内のデータだけ書き換える(Tableデータ)
できれば、ページは更新せず、iframe内だけ更新したく思います。
input_box
1 2 <input required type="text" class="data_base2" id="text2" name="data_1" list="example1" size="60" autocomplete="off" value=""> 3 4省略 5 6<div class="botton2"> 7<input type="button" class="botton_size" value='ページ更新' onclick="clickBtn1()" /> 8</div> 9 10<script> 11 function clickBtn1() { 12 const t1 = document.getElementById("text2").value; 13<!-- document.getElementById("text1").value = t1;--> 14 } 15</script>
↑上記でjavascriptよりinput boxの値は取得できました。
Table
1 <table class="editable-table border="1" style="text-align: center;vertical-align:middle;"> 2 <thead> 3 <tr> 4 {% for col in col_1 %} 5 <th>{{col}}</th> 6 {% endfor %} 7 </tr> 8 </thead> 9 <tbody> 10 {% for item in data %} 11 <tr> 12 {% for item_1 in item %} 13 <td contenteditable="true">{{item_1}}</td> 14 {% endfor %} 15 </tr> 16 {% endfor %} 17 </tbody> 18 </table>
iframe
1 <div class="iframeBody"> 2 <iframe width="100%" height="650px" src="{{ url_for('next_page2')}}";></iframe> 3 </div> 4
app.py
1from flask import Flask, render_template, request, session, url_for, redirect, jsonify,g 2from flask.views import MethodView 3import sqlite3,pickle 4import pandas as pd 5 6app = Flask(__name__) 7 8data_base="◎.db" 9table_1="◎" 10 11app = Flask(__name__) 12 13def get_db(): 14 if 'db' not in g: 15 g.db = sqlite3.connect(◎◎) 16 return g.db 17 18def close_db(e=None): 19 db = g.pop('db', None) 20 21 if db is not None: 22 db.close() 23 24#「/」へアクセスがあった場合に、"Hello World"の文字列を返す 25@app.route("/") 26def hello(): 27 return render_template('index.html') 28 29@app.route("/next_page", methods=['POST']) 30def index(): 31 32 global id2_ 33 global id_ 34 global path_ 35 global db 36 global q1 37 38 if request.method == 'POST': 39 id2_ = request.form.get("user_id2") 40 id_ = request.form.get('user_id') 41 path_ = request.form.get('path1') 42 43 db = get_db() 44 sql = "SELECT name from sqlite_master where type='table';" 45 46 try: 47 cur = db.execute(sql) 48 except: 49 return render_template('/next_page.html') 50 51 q1=[] 52 53 for a in cur.fetchall(): 54 q1.append(''.join(a)) 55 56 return render_template('/next_page.html',title1=id_,title2=id2_,group=q1) 57 58 else: 59 return render_template('index.html') 60 61@app.route("/hoge") 62def next_page2(): 63 64 V2 =id2_ 65 V1 =id_ 66 67 db = get_db() 68 69 mydata = [] 70 sql = "select * from " + V2 71 72 try: 73 cur = db.execute(sql) 74 except: 75 return render_template('index.html') 76 77 mydata = cur.fetchall() 78 df=pd.read_sql(sql,g.db) 79 80 return render_template('/next_page2.html',\ 81 title1=V1, \ 82 title2=V2, \ 83 group=q1, \ 84 col_1=df.columns, \ 85 num=mydata[0], \ 86 data=mydata) 87 88#app.pyをターミナルから直接呼び出した時だけ、app.run()を実行する 89if __name__ == "__main__": 90 app.run(debug=True)
あなたの回答
tips
プレビュー