前回ではSQLite3に商品情報を更新する機能を作成しましたが、今回は商品情報を削除する機能を作成していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
instance └── create_db.py └── itemdb.sqlite3 web └── itemdb.py └── __init__.py └── templates | └── base.html | └── index.html | └── newitem.html | └── updateitem.html (1)・・・ 更新 └── items.py (2)・・・ 更新 └── static └── style.css |
(1)updateitem.html
商品情報の更新ページに「削除」ボタンを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{% extends 'base.html' %} {% block title %}商品詳細{% endblock %} {% block content %} <h2>商品詳細</h2> <form class="itemform" method="post"> <table> <tr> <td><label for="item_name">商品名:</label></td> <td><input name="item_name" id="item_name" value={{data['item_name']}}></td> </tr> <tr> <td><label for="price">価格:</label></td> <td><input name="price" id="price" value={{data['price']}}></td> </tr> <tr> <td><button type = "submit" name = "action" value = 'update'>更新</button></td> <td><button type = "submit" name = "action" value = 'delete'>削除</button></td> </tr> </table> </form> {% endblock %} |
・18,19行目:buttonタグに変更し、「削除」ボタンを追加
(2)items.py
削除処理を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
(省略) @bp.route('/items/<item_name>', methods=('GET', 'POST')) def update(item_name): if request.method == 'POST': if request.form['action'] == 'update': item_name_new = request.form['item_name'] price = request.form['price'] db = get_db() db.execute("UPDATE items SET item_name=?, price=? WHERE item_name=?", (item_name_new, price, item_name)) db.commit() elif request.form['action'] == 'delete': db = get_db() db.execute("DELETE FROM items WHERE item_name=?", (item_name,)) db.commit() return redirect(url_for('items.index')) else: db=get_db() searchdata = db.execute( "SELECT * FROM items WHERE item_name like '%"+item_name+"%'").fetchone() return render_template('updateitem.html', data=searchdata) (省略) |
・6~11行目:更新処理機能(POSTされたbuttonタグのvalue要素が’update’の場合)
・12~15行目:削除処理機能(POSTされたbuttonタグのvalue要素が’delete’の場合)
実行結果は以下になります。
・TOP画面 ⇒ ”れんこん”を選択
・更新画面 ⇒ 「削除」ボタン押下
・更新後 ⇒ ”れんこん”が削除
以上です。
“削除機能を追加する” への 0 件のフィードバック