#******************************************************************************# # ファイル名:main.py # バージョン:p0001 Ver1.0 # 機能: # 作成日:2024/11/25 # 更新日:2024/12/15 W007 W008 #*******************************************************************************# import os import json from flask import Flask, render_template, request # --- 追加 2-1 render_template 追加 6-1 request from KDpay import PayManager #--- 追加 7-1 file_path = 'KDjson.json' app = Flask(__name__) # ------------------------------------------------------------------------------ # # # ------------------------------------------------------------------------------ # @app.route('/') def hello_show(): return 'Hello World!' # ------------------------------------------------------------------------------ # # # ------------------------------------------------------------------------------ # @app.route('/index') def index(): insert_dict = { 'insert_1': 'insert_1部分です。', 'insert_2': 'insert_2部分です。', } return render_template('index.html', title='Webアプリテスト', insert_dict=insert_dict) # ------------------------------------------------------------------------------ # # 家計簿 # ------------------------------------------------------------------------------ # @app.route('/kakeibo', methods=['GET', 'POST']) #--- 修正6-1 def kd(): # 既存ファイルを確認 if not os.path.exists(file_path): # 無ければ作成 with open( file_path, mode='w', encoding="UTF-8" ) as open_json: initial_list = [{ "month" : [] , # "月" "day" : [] , # "日" "content" : [] , # "内訳" "amount" : [] # "金額" } ] json.dump( initial_list, open_json, indent=4, ensure_ascii=False) # ペイ(収支)データ管理用クラス(KDpay.py)オブジェクト作成 #--- 追加7 pay_manager = PayManager() # JSONファイルを読み込んで、辞書型リストを作成 with open( file_path, mode='r', encoding="UTF-8") as open_json: json_load_list = json.load(open_json) # 読み込んだファイルをペイ(収支)データ管理用クラスオブジェクトに追加 --- 修正7 for pay_data in json_load_list: pay_manager.add_pay(pay_data) #### HTTPリクエスト GETメソッド受信 # --- 修正6 if request.method == 'GET': # 更新した辞書型リストを送信し、HTMLをレンダリング return render_template('kakeibo_test_json/kd.html', title='kakeibo', pay_list=pay_manager.pay_data_list) #--- 修正7-4 json_load_list → pay_manager.pay_data_list #### HTTPリクエスト POSTメソッド受信 「削除」ボタンが押されたときの処理 # --- 追加 7 if request.method == 'POST' and request.form.get('delete_number') != None : # 入力された削除番号を整数型に変換、リストの要素番号が0から始まるため1マイナス number = int( request.form.get('delete_number') ) - 1 pay_manager.delete_pay(number) # JSONファイルに書き込み --- 修正7 with open(file_path, mode='w',encoding="UTF-8") as open_json: updated_data_list=[] for pay in pay_manager.pay_data_list: updated_data_list.append({ "month": pay.month, "day": pay.day, "content": pay.content, "amount": pay.amount }) json.dump(updated_data_list, open_json ,indent=4,ensure_ascii=False) # 更新した辞書型リストを送信し、HTMLをレンダリング return render_template('kakeibo_test_json/kd.html', title='kakeibo', pay_list=pay_manager.pay_data_list)# 修正7-4 json_load_list → pay_manager.pay_data_list #### HTTPリクエスト POSTメソッド受信 「送信」ボタンが押されたときの処理 # --- 追加6-2 if request.method == 'POST': # 画面上で入力された情報を取得し、辞書データを作成 add_dict = {"month":request.form.get('month'), "day":request.form.get('day'), "content":request.form.get('content'), "amount":request.form.get('amount') } # 辞書データを辞書型リスト(PayManagerオブジェクト)に追加 pay_manager.add_pay(add_dict) #--- 修正7-5 (前) json_load_list.append(add_dict) # JSONファイルに書き込み # --- 修正7-6 with open(file_path, mode='w',encoding="UTF-8") as open_json: updated_data_list=[] for pay in pay_manager.pay_data_list: updated_data_list.append({ "month": pay.month, "day": pay.day, "content": pay.content, "amount": pay.amount }) json.dump(updated_data_list, open_json ,indent=4,ensure_ascii=False) # 更新した辞書型リストを送信し、HTMLをレンダリング return render_template('kakeibo_test_json/kd.html', title='kakeibo', pay_list=pay_manager.pay_data_list)# 修正7-4 json_load_list → pay_manager.pay_data_list # ------------------------------------------------------------------------------ # # # ------------------------------------------------------------------------------ # if __name__ == '__main__': app.run() |

0 件のコメント:
コメントを投稿