• 巴拉記帳本的後端源碼
  • 巴拉記帳本的前端源碼
  • 巴拉記帳本的前台畫面
    • 因為是用 Replit 架的,所以太久沒人連線前端或後端 API 可能會睡著 -.- ,之後完成後這個 side project 後再考慮弄個程式定期叫醒

# 20230806 Day01

其實之前就在寫了,但因為各種事情 還有分心暫時停擺了,最近閒賦在家當然要趕快重新開始!!那就以重新開始這天稱為第一天吧!

# 前端進度

  • 減少第一版要寫的功能以增加完成的機率 =_=
  • 找到一個合作小夥伴(應該)

# 後端進度

  • 開始寫 View,暫時維持使用 ResTool 完美主義延續下去根本第一版都出不來 ~_~
  • 遇到的問題
    • no such table... 記得異動資料庫後要下後續的兩條指令 =_=
    • 日期可以傳入 20230806 欸 0.0...
    • ⭐ResTool 傳入值跟適用情境不夠,之後要改
    • 關於 DRF 的後台
      • Models 沒有顯示是因為沒有註冊 -> 註冊自動化
      • 統整下來在 app 下方的 admin.py 加入以下:
      from django.contrib import admin
      from django.apps import apps
      models = apps.get_models()
      for model in models:
          try:
              admin.site.register(model)
          except admin.sites.AlreadyRegistered: # 跳過重複註冊的
              pass
    • 欄位的最小長度要用什麼敘述? A:預設沒有這個敘述,要自己擴寫
    • Django 不小心新增一個空字串作為 PK 我無法使用管理後台刪除該筆資料
      • 朋友解釋是因為 Python 的 Dict 不能以空字串作為 key,所以對 Python 來說沒有這個東西,自然也就刪除不到
        • 猜測用 delete 方法的接口效果也一樣(中間也過序列化器,應該也涉及 Python 資料結構),討論完的結論就是... 大大用 Chrome 打開 SQLite 刪吧囧
        • 請做好空字串防止!!
    • 序列化器出來的東西跟我想的不一樣 DRF 初學者寫 Join 要命 rrr-> 明天來做點釐清...

# 20230807 Day02

# 前端進度

  • 暫無
  • 組件趕快整理出來才能讓小夥伴幫忙 r >_<

# 後端進度

  • 研究 DRF 序列化器
  • 代碼整理
    • 重新設計 ResTool
      注意:原生 Python 沒有多載,方法簽章相同時,後面 method 覆蓋前面 method
    from django.http import JsonResponse
    class ResponseTool():
      def success_json_res(data):
          response_data = {
              "code": "SUCCESS",
              "message": "成功",
              "data": data
          }
          return JsonResponse(response_data, safe=False)
      
      def exception_json_res(Exception):
          response_data = {
              "code": "SOME_EXCEPTION",
              "message": str(Exception),
              "data": {}
          }
          return JsonResponse(response_data, safe=False)
    • 補充:save 參數的意義

# 20230808 Day03

# 前端進度

  • 確認 Axios 可以用 put method

# 後端進度

  • 研習 QuerySet,還借了書。

# 20230809 Day04

# 前端進度

# 後端進度

  • 研習 kwargs、網址傳參

# 20230810 Day05

# 前端進度

# 後端進度

  • API 撰寫
    • 稍微改良一下 views.py 主要的寫法

今天遇到的問題,主要發生在查全部記帳不傳入參數:(貌似是昨天就寫出來的問題,但沒測到就收工了)

  1. TypeError: 缺少必要參數

...missing 1 required positional argument: 'id'

似乎是類似這樣的問題,後來改寫法後是沒遇到了
2. 查不到東西??

myapp.models.Account.DoesNotExist: Account matching query does not exist.

我想了一下它似乎進到 if 裡了,但又是空的,所以查不到東西

後來我印一印得知不傳參數,那個參數會是 None ,寫法用是否為空字串判斷當然是❌❌

改成這樣就修好囉

if kwargs.get('id') != None:

# 20230811 Day06

裸辭... 很可怕欸,變成自然醒又懶洋洋的,跟我本來的期望有點落差 = = 不過就當休息也不錯?只是之前指望自己可以做到很多,其實實際上能做到的很少 T_T

# 前端進度

# 後端進度

  • API 代碼規劃與撰寫
    • 修改記帳: def put(self, request,*args, **kwargs)
    • 刪除記帳: def delete(self, request,*args, **kwargs)
    • 修改分類:基於關聯安全考量加上暫時沒配套措施,我只讓它修改中文 desc
    • 刪除分類:暫無,因為有關聯,給使用者單純刪可危險了,需要研擬配套措施
    • 額... 之後查詢類的 API 怎麼取名才顯得 RESTful,去取材吧...
  • 已知使用 Python 的 TODO

# 20230812 Day07

# 20230813 Day08

# 前端進度

# 後端進度

  • RESTful API 命名考究,閱讀文章 1 2 3

# 20230814 Day09

# 前端進度

# 後端進度

  • 圖表接口安排與 urlpatterns 研究

# 20230815 Day10

# 前端進度

# 後端進度

  • Queryset 與運算
    • 遍歷與效能
    • 使用串列快速做數學運算吧
    • dict 存放資料
  • 要做針對帳目的計算時才發現之前根本沒有記錄金錢的欄位(狂汗),給它補上
    • 如果 sqlite 已經存在多筆資料,在 model 沒給預設值的狀況,執行 python manage.py makemigrations ,它會問你要 (1) 現在給那些既有資料一個值;還是 (2) 在 model 定義預設值
    • 這個欄位需要做資料防護,必須 >=0,因為原先設計 views.py 程式中是用 io 欄位的 INPUT/OUTPUT 去決定最終正負號
  • 神秘錯誤一則

# 20230816 Day11

# 前端進度

  • 稍微想像了下串接..
  • 在本機 clone 了專案

# 後端進度

  • 完成最後一支 API
  • 單引雙引的差別複習
  • 閱讀 1

下次作業日才為 Day12