JSONで辞書

Acronym とかInitialismとか覚えにくい。混同してしまう。

専門用語、ただの英語だったりするけど業界でよく使う言葉は理解が必要。

覚えればいいだけだけど、メモしておきたい。

これをDjangoで作成してスマホですぐに見れるようにしようと思った。

スマホのアプリは敷居が高いので、いわゆるWebアプリ?

簡単なのでFlaskというのがいいかと思ったけど、案外面倒くさい。

慣れたらDjangoも面倒でもないし、いろいろ作ってきたのでメリットが。

cssやbaseのHTMLとか使いまわしてるし。

Sqliteを使えば簡単なんだろうけど、おもしろいのでJSONで作成してみた。

中身が見たければそのままプリントアウトで済みそうだし。

調べたら、Modelを作ってformを書いて… と出てきたが、ただのテキストファイルなので、普通にHTMLのフォームでできるんじゃない?

ただ、Formオブジェクトを介さないので、formのvalidは使えない。(たぶん)

でも、項目数が少ないので、必須項目のチェックだけすればよい。(こととした)

Formのinputの値はrequest.POST.getlist(‘key’)の形で受け取れる。

    strkey=request.POST.getlist('key')[0]
    strkey=unicodedata.normalize("NFKC", strkey).lower()
    strkey=strkey.replace(" ", "")
    if strkey == '':
        isGo=False

入力必須の項目をチェックしているだけ。

JSONに追加するには、

        if isGo:
            data = {
                "key": strkey,
                "acronym": stracronym,
                "term": strterm,
                "explain": strexplain
                }
            json_data.append(data)
            with open(json_path, "w", encoding="utf-8") as f:
                        json.dump(json_data, f, ensure_ascii=False, indent=4)

削除したり更新したりするには、keyをその項目としている。
(厳密ではないので同じものがあるとアウト)
削除は、

        if isGo:
            json_path = os.path.join('json/term.json')
            with open(json_path, 'r', encoding='utf-8') as f:
                json_data = json.load(f)
            filtered_data = [item for item in json_data if item["key"] != strkey]
            with open(json_path, "w", encoding="utf-8") as f:
                json.dump(filtered_data, f, ensure_ascii=False, indent=4)

自分で使う分にはなんの問題もない。🙂