まず初めに、下記のサイトでも質問をさせていただいております。
情報が更新されましたら随意反映させていただきます。
https://ja.stackoverflow.com/users/59301/keita-takada?tab=questions
実現したいこと
[http://127.0.0.1:5000/proposed]画面の
[食材名]欄で入力されたものを、「追加」ボタンが押されたら、pythonとhtmlの処理を通して、テーブル名「好き」リストに挿入したいです。
前提
pythonで、ユーザーが入力した食材をデータベースで保存するシステムを作っています。
ローカルサーバーで試している段階です。
「好き」リストの写真欄は空欄のままで挿入します。
画面に表示されている「採用」ボタンは、表示されている食材を同じく「好き」リストに挿入する挙動なのですが、これはうまく機能しています。
発生している問題・エラーメッセージ
「追加」ボタンが押されたら、「好き」リストに挿入する機能を実装しても、エラーにはなりませんが、コマンドプロンプト上でリストを確認しても、追加されていませんでした。
sqlite> SELECT * FROM 好き;
1|鶏肉|鶏肉.jpeg
2|豚肉|豚肉.jpeg
3|牛肉|牛肉.jpeg
4|羊肉|羊肉.jpeg
sqlite>
(コマンドプロンプト上) 「好き」リストは変わらないまま、、、。
該当のソースコード
下記のコードのインデントを直して
**app.py
**
from flask import Flask, render_template, request, session, redirect, url_for
import sqlite3
app = Flask(name)
db_path = 'mydatabase.db'
@app.route('/proposed', methods=['GET', 'POST'])
def proposed():
<!-- (後略) -->elif 'add' in request.form: # 「追加」ボタンの処理 conn = sqlite3.connect(db_path) cursor = conn.cursor() # フォームから食材名を取得 food_name = request.form.get('foodName') # 食材名が入力されている場合は「好きリスト」に追加 if food_name: try: # 写真は空のままで挿入する例としてNoneを指定 cursor.execute("INSERT INTO 好き (名前, 写真) VALUES (?, ?)", (food_name, None)) conn.commit() conn.close() except Exception as e: print("エラー:", e) # フォームを非表示にするためにJavaScriptを使用(ここでフォームを非表示にする処理を行う) return render_template('proposed.html', suggested_name=session['current_name'], suggested_photo=session['current_photo'], added=True) # 追加処理が終わった後に再度提案画面を表示するためにリダイレクトを行う return redirect(url_for('proposed'))
**proposed.html
**
<button type="button" onclick="addFood()">追加</button>
</form> <div id="addForm" style="display: none"> <h3>食材名を入力してください:</h3> <form method="post" action="/proposed"> <input type="text" name="foodName" required /> <button type="submit" name="add">追加</button> </form> </div> <script> function addFood() { var addForm = document.getElementById("addForm"); addForm.style.display = "block"; } </script> <!-- (後略) -->データベース(好きリスト)の情報
sqlite> PRAGMA table_info(好き);
0|id|INTEGER|0||1
1|名前|TEXT|1||0
2|写真|TEXT|0||0
試したこと
新たに「add.html」に画面推移しようとも試みましたが、うまくいきませんでした。
chat gptに同様の問題を投げかけました。修正されたコードでは改善されませんでした。
補足情報(FW/ツールのバージョンなど)
コードで使用されている主なFW(フレームワーク)とツールは以下の通りです:
・Flask
・SQLite3
・Jinja2
また、コードエディタはVisual Studio Codeです。
他の必要な情報に関しても、お答えいたします。
どうか、ご回答のほど宜しくお願い致します。
あなたの回答
tips
プレビュー