自作アンケートページの回答を保存してからページを更新したい
動的なアンケートサイトの作成
Google colab上でflaskを用いてアンケートをのためのWebアプリを作成しようとしています。
自動で画像を生成し、それに対する点数を回答とし、その回答を元に新しい画像を生成してまた回答を集めるという内容にしています。
発生している問題・エラー
from flask import Flask, render_template, request#追記変更
from flask_ngrok import run_with_ngrok
import sqlite3
img_url = #画像urlを生成する部分(省略)
app = Flask(__name__)
run_with_ngrok(app) # Start ngrok when app is run
@app.route("/")
def index():
return render_template("index.html")
@app.route("/loc", methods = ["GET","POST"])
def loc():
if request.method == 'POST':
id = uuid.uuid1()
y = request.form.get('y')
write_db(dbname, y, img_url) #データベースへ画像URLと回答を登録
img_url = create_img(y, img_url) #画像URLと回答をもとに、新しい画像URLを生成
return render_template("loc.html", image = img_url)#新しく生成した画像URLをもとにページを更新し、それに遷移する
else:
#開くだけならURLでリクエストなのでGET
return render_template("loc.html", image = img_url)
if __name__ == '__main__':
app.run()
これを実行すると以下のように
write_db(dbname, y, img_url) #データベースへ画像URLと回答を登録
UnboundLocalError: local variable 'img_url' referenced before assignment
ローカル変数img_urlが定義されていないと出てきます。(グローバルでしか定義していないので当たり前なのですが)
画像URLを回答yを両方sqlite3のテーブルに保存するためにはどうすれば良いでしょうか?
loc.htmlの内容です。img_urlを引数とし、画像を表示できるようにしています。
<title>アンケート</title>
<body>
<form action="/loc" name="locdata" method="POST">
<input type="text" name="y" value="この画像に0から9で点数をつけてください">
<input type="submit" value = "送信">
</form>
<img src = "{{img_url}}">
<script>
function displayData(y) {
const formElements = document.forms.locdata
formElements.y.value = y;
}
</script>
index.htmlの内容です。このページはただ文字列と書いてあるだけで構わないです。
<title>アンケート</title>
<body>
<form action="/loc" name="locdata" method="POST">
<input type="text" name="y" value="この画像に0から9で点数をつけてください">
<input type="submit" value = "送信">
</form>
<h1>The Images</h1>
<script>
function displayData(y) {
const formElements = document.forms.locdata
formElements.y.value = y;
}
</script>
0